Java类及类的成员:
内部类
一个类定义于另一个类的内部。
1.成员内部类
又分为 静态成员内部类 和 非静态成员内部类。
<1> 作为外部类的成员
- 可以调用外部类的结构
- 可以用 static 修饰
- 被四种权限修饰符修饰
<2> 作为一个类
- 可以定义属性、方法、构造器
- 可以被 final 修饰,表示不能被继承。
- 可以被 abstract 修饰
2.局部内部类
在方法、代码块、构造器内
内部类的使用
1.如何实例化成员内部类
创建静态的成员内部类:外部类.内部类 对象名 = new 外部类.内部类();
创建非静态的成员内部类:先创建外部类对象外部类 对象名1 = new 外部类();
,外部类.内部类 对象名 = 对象名1.new 内部类();
2.如何在成员内部类中区分调用外部类的结构
没有冲突时直接调用即可。
当外部类和内部类的属性冲突:
- 调用内部类的属性:
this.属性名
- 调用外部类的属性:
外部类.this.属性名
3.开发中局部内部类的使用
<1>常见应用场景:方法 返回一个实现了xxx接口的类的对象。
class Person{
public Comparable getComparable(){
class MyComparable implements Comparable{
@Override
public int compareTo(Object o) {
return 0;
}
}
return new MyComparable();
}
}
<2> 局部内部类的方法中
例如,声明在方法method1()中的局部内部类,局部内部类中定义方法method2(),当在method2中调用method1里的局部变量时,要求此局部变量声明为 final 。
class 外部类{
public void method1(){
int num = 12;
class 内部类{
public void method2(){
//输出num
}
}
}
}
在jdk 7及之前版本,要求此局部变量显式声明为final。
在jdk 8及以后版本,可以省略final的声明