for java beginner 5-2 - 自己实现枚举-下
[b]刚刚不是说了会有N多 IF ELSE
现在把他们弄掉[/b]
--------------
------------------------------------------------
枚举换这个方法实现,其他什么都不变,还是可以运行正确的,非常正确!!
[color=red][b]采用 抽象方法定义nextDay()就将 巨量的 if else 转移为 一个个独立的类[/b][/color]
[b]刚刚不是说了会有N多 IF ELSE
现在把他们弄掉[/b]
--------------
package com.ncs;
//眼睛大一点,这不是"类",是我写的枚举
//★2 变了
public abstract class Weekday {
//别的地方就不要new了,只有我自己可以new
private Weekday(){}
//----------------------------------new
//刚刚说了N多 if else不是我们要的, 我们要thinking .....
//想想能不能把每个 对象 的 nextday()方法 由他们 自己去实现 ,而不是一个 '大类' 全部完成
// 可以, JAVA思想里有 抽象 方法, 抽象方法就是需要每个 '子类' 自己去实现 的
//★1写了这个 抽象 方法后 上面的类就要变了
public abstract Weekday nextDay();
//====================================new
//然后 自己 可以包含很多个 自己
//这只是演示而已,不弄7 个了,省得等下N多 if else
//实现里不会自己去写ENUM的,也不会让你写的
//★3 然后这里也变了,怎么可以去new 一个 抽象 类呢
// 我们可以去new 抽象 类的子类
/* ============下面两行不行了,换了
public static final Weekday SUN = new Weekday();
public static final Weekday MON = new Weekday();
*/
public static final Weekday SUN = new Weekday() {
//★★传说里的 匿名 类 出现了 ,也就多了一对{}
// 可以按 修复 键会提示你 实现方法的
@Override
public Weekday nextDay() {
// TODO Auto-generated method stub
// 有限个,知道了 SUN,那就返回 MON
return MON;
}
};
public static final Weekday MON = new Weekday() {
//★★传说里的 匿名 类 出现了 ,也就多了一对{}
// 可以按 修复 键会提示你 实现方法的
@Override
public Weekday nextDay() {
// TODO Auto-generated method stub
// 有限个,知道了 MON,那就返回 SUN
return SUN;
}
};
//好习惯来了,写了一个东西么,最好覆盖一下 toString()
public String toString() {
return this==SUN?"SUN":"MON";
//只有两个就偷偷懒吧
//如果写全7个,这里就要长了 N多 if else
//这里 有了 内部类就不需要了N多 if else
}
}
------------------------------------------------
枚举换这个方法实现,其他什么都不变,还是可以运行正确的,非常正确!!
[color=red][b]采用 抽象方法定义nextDay()就将 巨量的 if else 转移为 一个个独立的类[/b][/color]