内部类

1、内部类的分类:

(1)Java中允许将一个类A声明在另一个类B中,则类A就称为内部类,类B称为外部类。

(2)内部类的分类:成员内部类局部内部类

① 成员内部类:又可以分为静态成员内部类、非静态成员内部类。

② 局部内部类:一般声明在方法、构造器、代码块中。

2、成员内部类的特点:

① 一方面,作为外部类的成员:

可以调用外部类的结构。

可以被static修饰。

可以被4种不同的权限修饰。(public、protected、default、private)

② 另一方面,作为一个类,则具有普通类的通用特点,如:

类中可以定义属性、方法、构造器、代码块;

可以被final修饰,表示此类不能被继承,反之,就可以被继承;

可以被abstract修饰。

3、成员内部类的使用:

(1)实例化成员内部类:

① 静态成员内部类对象:

外部类名.内部类名  实例化名 = new  外部类名.内部类名();

② 非静态成员内部类对象(先将外部类实例化后,再进行下列操作)

外部类名.内部类名  内部类实例化名 = 外部类实例化名.new  内部类名();

(2)如何在成员内部类中区分调用外部类的结构?

① 当不重名时,可以直接使用省略标识的调用方法。如:eat();

② 当成员内部类中的结构与它的外部类中的结构重名时,则必须要显示的写出当前调用的是谁的结构。如:

name; //方法的形参

this.name; //内部类属性

Person.this.name; //外部类属性

4、开发中,局部内部类的使用:

(1)在外部类的方法、构造器、代码块中直接编写内部类结构。

(2)将接口(或抽象方法)的实现类,放在一个普通类的方法中,实现出来。

(3)注意点:

① 在局部内部类的方法中,若调用局部内部类所声明的方法中的局部变量的话,要求此局部变量声明为final类型的。

② JDK7及其之前的版本,要求此局部变量显示的声明为final类型的;JDK8及其之后的版本,可以省略final的声明。

posted @ 2022-06-22 20:29  萧若風  阅读(26)  评论(0)    收藏  举报