创建一个Interface数组赋值给实例化对象的用途是什么

时间:2016-07-04 13:23:28

标签: java interface

这里我们创建了一个B对象并将其分配给Interface的引用变量。它实际上意味着什么? 接口的目的是用于类的实现。接口在创建数组时可以做什么。 这究竟意味着什么?

white-space: pre-line;

3 个答案:

答案 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()方法。查看polymorhisminheritance以及is-a&has-a testing