黑马程序员技术交流社区
标题:
匿名 内部类 问题
[打印本页]
作者:
XinWen
时间:
2014-5-3 13:51
标题:
匿名 内部类 问题
public class EnumDemo {
public static void main(String[] args) {
}
public abstract static class Lamp {
//常量,交通灯的固定三种颜色
public static final int RED = 0;
public static final int GREEN = 1;
public static final int YELLO = 2;
//该灯 持续点亮的时间
private int mTime;
//该灯的颜色,必须是 本类中定义的 三个颜色之一
private int mColor;
private Lamp(int pTime, int pColor){
mTime = pTime;
mColor = pColor;
}
public abstract Lamp next();
public static Lamp Red = new Lamp(3, Lamp.RED) {
@Override
public Lamp next() {
return Green;
}
};
public static Lamp Green = new Lamp(3, Lamp.GREEN) {
@Override
public Lamp next() {
return Yello;
}
};
public static Lamp Yello = new Lamp(1, Lamp.YELLO) {
@Override
public Lamp next() {
return Red;
}
};
}
}
复制代码
内部 类 Lamp 必须要声明为 static 为什么
作者:
wconho
时间:
2014-5-3 14:03
当外部类中的静态方法访问内部类时,内部类必须是静态static的,这里的外部类是EnumDemo,这里的外部静态方法是main.
作者:
shi0000
时间:
2014-5-3 15:35
因为你的内部类中使用了静态方法或变量
作者:
王春蕾
时间:
2014-5-3 16:19
因为只有红绿蓝三种颜色的交通灯,是不能被改变的,所以定义成final已确保三种颜色灯的不可改变性,定义static是为了方便使用类名直接调用,更加符合面向对象的特点
作者:
skill20
时间:
2014-5-3 16:24
如果内部类被静态修饰,相当于外部类,会出现访问局限性,只能访问外部类中的静态成员。
注意;如果内部类中定义了静态成员,那么该内部类必须是静态的。
作者:
wyqs92
时间:
2014-5-3 21:39
static修饰符。
内部类被静态修饰,出现访问局限性,只能访问外部类中的静态成员。
内部类被静态后,会随着外部类的加载而加载。
如果内部类中定义了静态成员,该内部类必须被静态修饰。
//访问静态内部类中的非静态成员。 直接创建内部类对象。
外部类名.内部类名 变量名 = new 外部类名.内部类名();
//访问静态内部类中的静态成员。 不需要对象。
外部类名.内部类名.内部类的静态成员
记住:内部类只有定义在外部类的成员 位置上,才具备这些修饰符。
作者:
XinWen
时间:
2014-5-4 08:28
wyqs92 发表于 2014-5-3 21:39
static修饰符。
内部类被静态修饰,出现访问局限性,只能访问外部类中的静态成员。
内部类被静态后,会 ...
清晰多了 感谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2