Java 内部类的总结
使用内部类的好处
- 内部类的方法可以访问该类定义所在域中的数据,包括私有数据
- 内部类可以对同一个包中的其他类隐藏
- 当想定义一个回调函数且不想编写大量代码的时候,使用匿名内部类比较便捷
内部类访问外部类
内部类既可以访问自身的数据域,也可以访问创建它的外围类对象的数据域
原理
语法
public class OuterClass {
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
InnerClass innerClass = outerClass.new InnerClass();
}
public class InnerClass {
}
}
注意:
- 内部类中所有的静态域都必须是 final
- 不能拥有 static 方法
局部内部类
- 不能使用 public 或者 private 访问说明符声明
- 对除所在方法的所有作用域隐藏
- 只可引用定义为 final 的 局部变量
匿名内部类
假如只创建某个类的一个对象,就不用命名了
示例:
public class OuterClass {
public static void main(String[] args) {
TestClass testClass = new TestClass() {
@Override
public void printMsg() {
}
};
}
public interface TestClass {
public void printMsg();
}
}
静态内部类
有时候, 使用内部类只是为了把一个类隐藏在另外一个类的内部,并不需要内部类引用外围类对象。为此,可以将内部类声明为 static, 以便取消产生的引用。
注意:
- 无法直接访问外部类的非静态资源