一、什么是内部类
顾名思义,内部类就是将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。
二、什么时候用内部类
如果一个事物里包含着其他事物,其他事物,可以创建一个内部类。
三、内部类的划分
内部类分为成员内部类和局部内部类。内部类也会生成.class文件。
1、成员内部类
定义在外部类中的成员位置,与类中的成员变量相似,可通过外部类对象进行访问。
内部类可以使用外部类的成员,包括私有成员。但是外部类要使用内部类的成员,必须建立内部类变量。
2、局部内部类
定义:在方法里面有一个内部类。
只有在内部类所属的方法中创建内部类对象,方可访问局部内部类。而测试类中只需要创建外部类对象,然后调用外部类方法即可。
四、匿名内部类
最常用到的内部类是匿名内部类。
1、定义的匿名内部类有两个含义
定义子类,实现接口,创建子类对象一步完成。
注意最后要加分号。表示一个子类对象的建立。匿名内部类创建在方法中。必须与父类有继承关系。
编译会生成一个没有名的.class文件。
2、调用内部类的方法
第一种:要想调匿名类的方法,只需要在类结束处加上 .方法名即可。如图:
第二种:也可以引用父类变量接收:
注意:匿名内部类只能写在方法中。
内部类从new开始到分号结束,就是子类的对象。用多态的方式赋值给父类的引用变量,根据多态定义,运行成员方法,编译看父类是否有此方法,有,编译成功。没有编译失败。运行是非静态方法,运行子类方法。即内部类的方法。