内部类和匿名内部类

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

内部类和匿名内部类什么是内部类?

在一个类的内部再定义一个类

class A{int i;class B{//B是A的内部类int j;int funB(){//int result = A.this.i + this.j; 等同于int result = i + j;return result;}}}

对a.java进行编译后,除了生成A.class外还有个A美元符B.class(内部类所生成的类文件。外部类美元符内部类.class),在B当中可以任意使用(并非拥有)A的成员变量和成员函数,B并非继承了A

class Test{public static void main(String args[]){A a = new A();//生成内部类对象A.B b = a.new B();a.i = 2;b.j = 4;int result = b.funB();System.out.PRintln(result);}}

生成内部类对象时首先要有外部类:

A a = new A();A.B b = a.new B();

匿名内部类举例

interface A{public void doSomething();}

class aImp implements A{public void doSomething(){System.out.println("做事");}}

class B{public void fun(A test){System.out.println("B的fun函数");test.doSomething();}}

class Test{public static void main(String args[]){B b = new B();//匿名内部类b.fun(new A(){ //与aImp的区别在于没有命名,用于实现接口Apublic void doSomething(){System.out.println("开始做事");}});}}

当需要调用B的fun方法时,需要A类型的参数传入

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航