黑马程序员技术交流社区
标题:
枚举
[打印本页]
作者:
邝雄伟
时间:
2013-2-1 22:05
标题:
枚举
01.public abstract class WeekDay{
02. private WeekDay(){
03. }
04. public abstract WeekDay nextDay();
05.
06. public final static WeekDay SUN = new WeekDay(){ //这讲到了大括号就是子类,有点忘记了,该去怎么理解,请分解代码
07. public WeekgDay nextDay(){
08. return MON;
09. }
10. public final static WeekDay MON= new WeekDay(){ //这讲到了大括号就是子类,有点忘记了,该去怎么理解,请分解代码
11. public WeekgDay nextDay(){
12. return SUN;
13. }
作者:
刘军亭
时间:
2013-2-1 22:35
这是普通类模拟的枚举类,因为这个类是一个抽象类,有一个抽象的nextDay方法,由于类是抽象的,不能直接new对象,所以new的是子类对象,既然子类就必须实现抽象方法。所以在new一个对象时要实现其中的抽象方法。由于手机发帖不方便所以不上代码了。
作者:
黄锦成
时间:
2013-2-1 22:38
其实是使用到了匿名内部类,如果这部分不熟悉的话,建议去看看老毕的视频,面向对象那里讲到了匿名内部类,很详细
作者:
杨浩
时间:
2013-2-2 20:11
实际上是调用了枚举类的无参构造,而枚举里是可以有抽象方法的,那么生成枚举对象的话,抽象方法必须被覆盖,这样就要写大括号了。贴一个我之前的代码。。也是获取下一个灯的。
public class Test2 {
public static void main(String[] args) {
System.out.println("测试方法演示:");
//设置当前灯为红灯
Lamp currentLamp = Lamp.RED;
int i = 1;
//循环输出三次,测试下一个灯的方法是否正常
while(i<4){
System.out.println(currentLamp+"的下一个灯是"+(currentLamp=currentLamp.getNextLamp()));
i++;
}
}
}
//定义的交通灯枚举
enum Lamp{
//包含红灯、绿灯、黄灯,三个元素。
RED(){
public String toString() {
return "红灯";
}
public Lamp getNextLamp() {
return GREEN;
}
},GREEN(){
public String toString() {
return "绿灯";
}
public Lamp getNextLamp() {
return YELLOW;
}
},YELLOW(){
public String toString() {
return "黄灯";
}
public Lamp getNextLamp() {
return RED;
}
};
//覆盖toString方法,方便测试打印
@Override
public abstract String toString();
//获取下个灯的方法
public abstract Lamp getNextLamp();
}
复制代码
作者:
王立浩
时间:
2013-2-3 09:18
这里用到的是匿名内部类,是类的多态的应用。格式是new 父类(){子类的实现方式},既然是用父类的引用指向子类对象,那么子类特有的方法是不能直接调用的,除非new 父类(){子类的实现方式}.方法名来使用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2