for java beginner 5-2 - 自己实现枚举-下

for java beginner 5-2 - 自己实现枚举-下

[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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值