关于JAVA接口“实例”

来源:互联网 发布:陕西省广电网络营业厅 编辑:程序博客网 时间:2024/04/23 19:29

今天在看JAVA中如何实现顺序线性表的时候,遇到了点小语法问题,后来解决了,现在写出来一方面便于复习时候看看,另一方面请牛人鉴别我的理解是否正确。

      具体的代码如下:

           A  a=new B();
         其中A为接口,B类实现接口A;

记得接口好像是不能创建实例的,看到此不得其解。后来在网上查了查,发现是可以这样的,于是编了个小程序检验是否正确:

interface  animal
{   //接口的实现
void a1();

 class c1  implements animal
{ //c1实现animal
public void a1()
{
System.out.println("This is c1");
}
}
 class c2  implements animal
{  //c1实现animal
public void a1()
{
System.out.println("This is c2");
}
}
public class Test1
{ //主函数
public static void main(String [] args)
{
        animal a=new c1();
        a.a1();
        a=new c2();
        a.a1();
}
}

运行结果是:

This is c1

This is c2

运行的结果验证了是正确的。

这种机制确实很方便,创建一个“接口类实例”就可以将任何一个实现它的类对象赋值给它,但是有时也有相当大的隐患:就拿上边列子来说,首先将创建c1对象并将地址赋给a,然后再创建c2对象同样赋给a,这样的话就永远无法再访问先前创建的c1对象,因为它虽然存在,但是不知道它的地址或者