for java beginner 7 JDK的枚举高级玩法

本文介绍如何在Java中使用枚举实现抽象方法,并通过示例展示了如何为枚举项添加具体实现。此外,还讨论了枚举作为单例模式的一种实现方式。
实现带抽象方法的枚举

现在看来,不管是自己写还是JDK里的
枚举都是一个 类

大部分写 枚举 都把它当内部类

[color=red]现在说一下,内部类 可以用那 四个 访问修饰符
[和方法 和 成员变量 平级的]

外部的类只有两个 public 和 默认的[/color]


---------------------------

package com.ncs;

public class EnumWithAbstractMethod {

public static void main(String[] args) {

}

public enum TrafficLights{
RED{
public TrafficLights nextLight(){
return GREEN;
}
}
,GREEN{
public TrafficLights nextLight(){
return YELLOW;
}
},
YELLOW{
public TrafficLights nextLight(){
return RED;
}
};
//每个灯都有下一个灯的方法,
//我们用 抽象 方法
public abstract TrafficLights nextLight();
//上面这行不行的,需要你里面的 constants 实现 方法
//所以在RED后面的一对{}表示一个子类的实现,子类的名字不知道
}

}


--------------------------------------
上面还没有时间,再弄个时间


package com.ncs;

public class EnumWithAbstractMethod {

public static void main(String[] args) {
TrafficLights trafficLights = TrafficLights.GREEN;
System.out.println(trafficLights.time); //30
trafficLights = TrafficLights.YELLOW;
System.out.println(trafficLights.time); //3
}

public enum TrafficLights{
RED(30){
public TrafficLights nextLight(){
return GREEN;
}
}
,GREEN(30){
public TrafficLights nextLight(){
return YELLOW;
}
},
YELLOW(3){
public TrafficLights nextLight(){
return RED;
}
};
//每个灯都有下一个灯的方法,
//我们用 抽象 方法
public abstract TrafficLights nextLight();
//上面这行不行的,需要你里面的 constants 实现 方法
//所以在RED后面的一对{}表示一个子类的实现,子类的名字不知道

private int time;
//构造方法只可以是private
//然后上面出错了 修改 加() 就完全OK了
private TrafficLights(int time){this.time = time;}
}

}
---
---------非常不错

[color=red]小知识
new Date(){}; 表示 是 new Date类的子类,子类的 构造方法call Date类的无参
构造方法,
假如现在希望call Date类的有参构造方法
可以这样写:
new Date(50000){};[/color]

知道了
[list]
[*]内部类
[*]类可以返回自己的类型 [人返回配偶肯定也是一个人,不会是动物]
[*]类里可以有 静态 常量,指向自己的一个实例对象
[/list]
思想:
枚举只有一个成员时,就可以作为一种单例的实现方式。
1,枚举就是一个类
2,构造方法默认就是私有的,不带参数
3,new方法也是自动写好的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值