1. java内部类
2. java匿名内部类
内部类顾名思义就是一个类中还有一个类,这个类可以访问外部类的所有成员,包括私有的成员。下面说一下内部类访问的特点:
- 内部类可以直接访问外部类成员
- 外部类要访问内部类必须建立内部类对象。`
class Outer{
private int num=6;
class inner{
public void show(){
System.out.println(num);//6
}
}
}
这里说明一点为什么内部类能访问外部类的成员是因为内部类持有外部类的引用既 外部类名.this;
下面说一个我们比较常见的问题:就是当内部类在局部位置时只能访问局部中被final关键字修饰的局部变量。
class Outer{
private int num;
public void method(){
class inner{
public void show(){
System.out.println(num);//此时报错,我们必须将num定义为final才可
}
}
}
其实这也很好理解的因为当我们调用一个方法时这个方法就进栈了,但是当出栈时变量也随之出栈了,这是就会编译出错了。所以我们应该将变量定义为final成一个常量。