文章目录
内部类
1. 内部类的概述
内部类指的是****把类定义在另一个类的内部,该类就被称为内部类。类名不需要和源文件名相同。
内部类的种类:
在Java中,内部类的使用共有两种情况:
(1). 在类中定义一个类(成员内部类,静态内部类);
(2). 在方法中定义一个类(局部内部类,匿名内部类)。
2. 局部内部类
局部内部类(本地内部类) : 定义在方法当中的类.
只能在当前方法中使用,出了方法就没办法使用.
publicclassTestDemo{publicvoidfunc(){classIn{privateint a;publicString str;}//局部内部类 缺点 :只能在当前方法中使用}}
3. 成员内部类
成员内部类也叫实例内部类,可以把他当作是外部类的一个普通实例的成员.
classOuterClass{publicint data1 =1;privateint data2 =2;publicstaticint data3 =3;// 实例内部类classInnerClass{publicint data4 =4;privateint data5 =5;publicstaticfinalint data6 =6;publicInnerClass(){System.out.println("不带参数的内部类的构造方法");}publicvoidtest(){System.out.println("InnerClass::test()");}}publicvoidfunc(){System.out.println("OuterClass::func1()");}}
注意事项:
1. 在实例内部类中 不能定义一个静态的成员变量
如果非要定义,只能定义 1 个,静态常量.(static final)
2. 如何实例化,成员内部类的对象
外部类名.内部类名 变量 = 外部类对象的引用.new 内部类();
3. 成员内部类当中,如果包含了和外部类同名的成员变量,那么如何在成员内部类当中访问
4. 如何继承内部类(了解即可)
5. 当一个类有内部类的时候的字节码文件(了解即可)
OuterClass$InnerClass
外部类$内部类.class
4. 静态内部类
classOuterClass{publicint data1 =1;privateint data2 =2;publicstaticint data3 =3;// 静态内部类staticclassInnerclass{publicint data4 =5;privateint data5 =5;privatestaticint data6 =6;publicvoidtest(){System.out.println("InnerClass::test()");}}}
注意事项:
1. 如何实例化 静态内部类的对象
外部类名.内部类名 变量 = new 外部类名.内部类名();
2. 静态内部类当中,如何访问外部类的成员变量
5.匿名内部类
classOut{publicvoidtest(){System.out.println("hello!");}}publicclassTest{publicstaticvoidmain(String[] args){newOut(){};}}
匿名内部类调用test()方法.
匿名内部类调用重写的test()方法
版权归原作者 wwzzzzzzzzzzzzz 所有, 如有侵权,请联系我们删除。