内部类
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的声明。
本文来自博客园,作者:萧若風,转载请注明原文链接:https://www.cnblogs.com/XiaoRuoFeng/p/16402196.html

浙公网安备 33010602011771号