2016-07-04 59 views
0

这里我们创建了一个B的对象并将它分配给了Interface的引用变量,这实际上是什么意思? 接口的目的是用于类的实现。当我们创建它的数组时,接口可以做什么。 这实际上是什么意思?创建一个接口数组分配给实例化对象的用途

interface I1{} 

class A implements I1{} 
class B implements I1{} 
class C extends B 
{} 
class D{} 





public class lab1 
{ 
    public static void main(String[] args) 
    { 

     I1 i1[] = new B[4]; 
     i1[0] = new A(); 
     i1[1] = new C(); 
     i1[2] = new B(); 
     //i1[3] = new D(); 

    } 

} 

回答

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(); 
} 

这段代码并不关心数组中存储的实际实例是圆形,矩形还是多边形,只要它们都实现了接口Shape即可。

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的基准

0

你有汽车列表(与驱动方法接口),但你不在乎,如果它是bmw,奥迪无人驾驶车。所有你需要的是它应该能够驱动器所以你可以调用drive()方法。检查polymorhisminheritanceis-a&has-a testing