P201 内部类
什么是内部类?
- 一个事物包含另一个事物
- e.g.身体和心脏/汽车和发动机
内部类的分类有哪些?
- 成员内部类
- 局部内部类(包含匿名内部类
成员内部类
… class A{
… class B{
}
… void method(){}
}
在方法外,故称为外部类
⚠内部类可以随意访问外部,但外用内,需要内部类对象
在内部类中可以直接访问外部类的private成员
在文件中,外部类和内部类都会显示
如:Body.class/Body$Heart.class
P205 内部类的定义
定义一个类时,权限修饰符规则:
- 外部类:public/default
- 成员内部类:public/protected/(default)/private
- 局部内部类:什么都不能写
看上面的class inner,前面没有任何修饰符
P206 局部内部类的final问题
什么情景?
局部内部类,当希望访问所在方法的局部变量时,这个局部变量必须是【有效final】的
即:此MyInner想访问上面方法的num变量
ps:java8后,只要局部变量事实不变,final可以省略
P207 匿名内部类
什么情况使用?
如果接口的实现类/父类的子类只需要【使用唯一的一次】
==》可以省略该类的定义,改用【匿名内部类】
格式
接口名称 对象名=new 接口名称(){
//覆盖重写所有抽象方法
};