学习内容:
1、 局部内部类
2、 匿名内部类
一、局部内部类:
一、类中具有五种模块属性、方法、代码块、内部类、构造器
二、普通类的修饰限制:public、private
内部类:的修饰限制:public、private、protected、package
三、外部类的属性在内部类中可以直接访问的到
public class Test{
public int b;
public class SubTest{
public void pp(){
System.out.println(b/*或者Test.this.b*/);
}
}
}
四、外部类访问内部类的属性必须创建对象
public class Test{
public int b;
public void pp(){
System.out.println(a);//报错
SubTest sub=new SubTest();
System.out.println(sub.a);//正确
}
public class SubTest{
public int a;
public void pp(){
System.out.println(b/*或者Test.this.b*/);
}
}
}
五、创建外部类可直接创建 Test a=new Test();
六、创建内部类在内部类方法体中中可以直接创建内部类,否则必须通过外部类引用创建
Test.SubTest sub=new Test().new SubTest();
七、访问值控制
public class Test{
public int a=10;
public class SubTest{
public int a=20;
public void pp(){
int a=30;
System.out.println(a/*访问局部变量a*/);
System.out.println(this.a/*访问内部类属性a*/);
System.out.println(Test.this.a/*访问外部类属性a*/);
}
}
}
八、内部类生成自己的.class文件 Test$SubTest
九、优点:(1)实现了比private范围更小的内容 (2) 可以实现Java的多继承(外部类继承,内部类继承,内部类的内部类继承…可以获取到更多的属性功能)
二、匿名内部类:
1、在整个项目中仅使用一次的内容(没有必要选择新建一个类 )节省内存
2、可用于抽象类或接口特例创建