22.内部类和匿名内部类
- 什么是内部类
- 一个类定义在另一个类的内部
- 内部类的使用方法
- 内部类是可以随意使用外部类当中所定义的成员变量和成员函数
- 生成内部类对象方法:new 外部类对象 . new 内部类对象
class A{int i;class B{int j;int funB(){int result = A.this.i +this.j;return result;}}}
classTest{publicstaticvoid main(String args []){A a =new A();A.B b = a.new B();a.i =2;b.j =3;int result = b.funB();System.out.println(result);}}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
5
- 匿名内部类的使用方法
- 生成匿名内部类方法:new 一个接口后面紧跟一个类来实现这个接口,只不过这个类是没有名字的
interface A{publicvoid doSomething();}
class B{publicvoid fun(A a){System.out.println("B类的fun函数");a.doSomething();}}
classAImpl implements A{publicvoid doSomething(){System.out.println("doSomething");}}
classTest{publicstaticvoid main(String args []){//AImpl al = new AImpl();//A a = al;B b =new B();b.fun(new A(){//和一个完整实现类的区别在于没有名字//生成了new A()的对象publicvoid doSomething(){System.out.println("匿名内部类");}});}}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
B类的fun函数
匿名内部类

浙公网安备 33010602011771号