- 理解:我可以在类A的内部定义一个类B,B为A的内部类,A为B的外部类
- 内部类的分类:成员内部类(静态的、非静态的) vs 局部内部类(方法内、代码块内、构造器内)
3. 成员内部类的理解
3.1. 成员内部类作为一个类
可以被abstract修饰,表示不能被实例化
可以被final修饰,不能被继承
3.2成员内部类作为外部类的成员,可以被4中权限修饰符修饰
可以被static修饰
可以调用外部类的结构(主要是属性、方法)
内部类的使用:
Person–外部类
Dog-静态内部类
Bird-内部类
1.创建静态成员内部类的对象
Person.Dog dog=new Person.Dog();
dog.shout//调用dog中的方法
2.创建非静态的成员内部类的对象
Person p1= new Person();
Person.Bird b1=new p1.Bird();
b1.sing();
- 调用外部类的属性
当出现参数同名时用类.this.,来调用外部类的属
局部内部类的使用
- 返回一个类时
interface A(){
classB implements A{}
return B;
或者return new A(){};
}