一:内部类
1.什么是内部类:
在一个类里面,再定义一个类
在这里A类就是外部类,B类就是内部类。
2.内部类的作用:
当我们写一个这Javabean类时如果按照以前的思维:
但是这里发动机也是一个独立的个体,发动机的相关属性跟车子本身没有太大关系,但是发动机又依赖车存在。
所以我们使用内部类,表示车里面有发动机,发动机是一个独立的个体。
这里Car就是外部类,Engine是内部类。
3.内部类的访问特点:
1.内部类可以直接访问外部类的成员,包括私有。
2.外部类要访问内部类的成员,必须要创建对象。(外部类不能直接访问内部类的成员)
究其原因是因为
这里面有个隐含的.this所以外部类无法直接访问内部类的成员,如果要访问
4.内部类的分类:
成员内部类(了解)
静态内部类(了解)
局部内部类(了解)
匿名内部类(重点)
二:成员内部类:
1.成员内部类的书写:
写在成员位置(类中方法外),属于外部类的成员之一。
可以被修饰符修饰比如 private,默认,protected,public,static。
在成员内部类里面,JDK16之前不能定义静态变量,JDK16之后才可以
2.如何创建成员内部类的对象:
方法一:在内部类中编写方法:对外提供内部类的对象。
方法二:直接创建: 外部类名.内部类名. 对象名=外部类对象.内部类对象;
三:静态内部类:
1.访问:
一种特殊的成员内部类 (加上static)。
静态内部类只能访问外部类的静态变量和静态方法,如果想要访问非静态需要创建对像。
2.创建以及调用方法:
四:匿名内部类:
1.定义与格式
是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。
包含了:
继承或者实现关系
方法重写
创建对象
匿名内部类必须继承一个父类或者实现一个父接口。
2.特点:
-
定义一个没有名字的内部类
-
这个类实现了父类,或者父类接口
-
匿名内部类会创建这个没有名字的类的对象