一、课本解释
我们希望一个静态域只有一个实例 ,不过对于每个外部对象,会分别有一个单独的内部类实例。如果这个域不是fianl,
它可能是不唯一的。
二、我的理解
把一个类声明为内部类,通常是因为它和外围类是有一定联系的。现在我们把手机声明为外围类,手机屏幕声明为内部类
public class MobilePhone {
private String name;
public void create(Screen screen) {
...
// 通过给定的手机屏做了一个手机
...
}
// 内部类,只有内部类可以声明为私有
public class Screen {
//屏幕大小
public static final double size = 5.6;
}
}
现在张三和李四都创建了一个手机。现在假设张三嫌屏幕太小。于是想通过MobilePhone.Screen.size = 10;修改下屏幕的大小。我们知道类的static属性是共享的,那么可想而知李四的屏幕也跟着“膨胀”了。这样会吓到别人滴。为了避免这种风险,对于“共享变量(static)”,一定要final。