这里我们创建了一个B对象并将其分配给Interface的引用变量。它实际上意味着什么? 接口的目的是用于类的实现。接口在创建数组时可以做什么。 这究竟意味着什么?
white-space: pre-line;
答案 0 :(得分:0)
它允许您对数组中的所有实例执行相同的操作(通过调用该接口的某些方法)。
例如:
for (I1 inst : i1) {
i1.doSomething (); // where doSomething() is a method declared by the interface I1
}
为了减少抽象,这里是一个更具体的例子 - 如果界面被调用Shape
并且它有draw()
方法,你可以通过写下来绘制所有形状:
for (Shape shape : shapesArray) {
shape.draw ();
}
如果存储在数组中的实际实例是Circles,Rectangles或Polygons,则此代码并不关心,只要所有实例都实现Shape
接口。
答案 1 :(得分:0)
您的代码应为
I1 i1[] = new I1[4]; // Change this
i1[0] = new A();
i1[1] = new C();
i1[2] = new B();
第一行创建一个对I1
个对象的引用数组。
其他行创建I1
A, C, B, D.
对象
您的代码不起作用,因为无法将类型A的对象分配给具体类型B的引用。
答案 2 :(得分:0)
您有汽车列表(与驱动方法接口),但您不在乎它是 bmw , audi 还是无人驾驶汽车。您所需要的只是它应该能够驱动,以便您可以调用drive()方法。查看polymorhism和inheritance以及is-a&has-a testing