内部类

120 阅读2分钟

一:内部类

1.什么是内部类:

在一个类里面,再定义一个类

image.png 在这里A类就是外部类,B类就是内部类。

2.内部类的作用:

image.png 当我们写一个这Javabean类时如果按照以前的思维:

image.png 但是这里发动机也是一个独立的个体,发动机的相关属性跟车子本身没有太大关系,但是发动机又依赖车存在。

image.png 所以我们使用内部类,表示车里面有发动机,发动机是一个独立的个体。

这里Car就是外部类,Engine是内部类。

3.内部类的访问特点:

1.内部类可以直接访问外部类的成员,包括私有。

2.外部类要访问内部类的成员,必须要创建对象。(外部类不能直接访问内部类的成员)

image.png 究其原因是因为

image.png 这里面有个隐含的.this所以外部类无法直接访问内部类的成员,如果要访问

image.png

4.内部类的分类:

成员内部类(了解)

静态内部类(了解)

局部内部类(了解)

匿名内部类(重点)

二:成员内部类:

1.成员内部类的书写:

写在成员位置(类中方法外),属于外部类的成员之一。  

可以被修饰符修饰比如  private,默认,protected,public,static。

在成员内部类里面,JDK16之前不能定义静态变量,JDK16之后才可以

2.如何创建成员内部类的对象:

方法一:在内部类中编写方法:对外提供内部类的对象。

image.png

image.png 方法二:直接创建:  外部类名.内部类名.  对象名=外部类对象.内部类对象;

image.png

三:静态内部类:

1.访问:

一种特殊的成员内部类 (加上static)。

静态内部类只能访问外部类的静态变量和静态方法,如果想要访问非静态需要创建对像。

image.png 2.创建以及调用方法:

image.png

四:匿名内部类:

1.定义与格式

       是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。

包含了:

      继承或者实现关系

      方法重写

      创建对象

匿名内部类必须继承一个父类或者实现一个父接口

image.png

2.特点:

  1. 定义一个没有名字的内部类
  2. 这个类实现了父类,或者父类接口
  3. 匿名内部类会创建这个没有名字的类的对象