java内部类

来源:互联网 发布:win10不能下载软件 编辑:程序博客网 时间:2024/06/18 08:18

内部类


 Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。

广泛意义上的内部类一般来说包括三种:成员内部类、局部内部类、匿名内部类

如果a类需要直接访问b类中的成员,而b类又需要建立a类的对象。这时,为了方便设计和访问,直接将a类定义在b类中。就可以了。a类就称为内部类。内部类可以直接访问外部类中的成员。而外部类想要访问内部类,必须要建立内部类的对象。如下程序:

class outer{  int num = 4;  class  inner {    void show(){      system.out.println("inner show run "+num);    }  }  public void method(){      inner in = new inner();//创建内部类的对象。      in.show();//调用内部类的方法。   }}

面试题:

(1)

new object(){   void show(){       system.out.println("show run");   }}.show();
(2)

Object obj = new object(){   void show(){      system.out.println("show run");   }};obj.show();

12的写法正确吗?有区别吗?说出原因。

写法是正确,12都是在通过匿名内部类(没有名字的内部类)建立一个object类的子类对象。

区别:

      第一个编译通过,并运行。

      第二个编译失败,因为匿名内部类是一个子类对象,当用objectobj引用指向时,就被提升为了

      Object类型,而编译时检查时Object类中没有show方法,所以编译失败。


0 0