枚举类

 A:枚举概述
    * 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等。
* B:回想单例设计模式:单例类是一个类只有一个实例
    * 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例。这才能是枚举类。

Demo1

public static void main(String[] args) {
  Week mon = Week.MON;
  Week tue = Week.TUE;
}

public class Week {

  public static final Week MON = new Week();
  public static final Week TUE = new Week();
  public static final Week WED = new Week();

  private Week(){}//私有构造,不让其它类创建本类对象
}

Demo2

public static void main(String[] args) {
  Week2 mon = Week2.mon;
  Week2 tue = Week2.mon;
  Week2 wed = Week2.mon;
  System.out.println(mon.getName());
  tue.getName();
  wed.getName();
}

有参构造

public class Week2 {
public static final Week2 mon = new Week2("星期一");
public static final Week2 tue = new Week2("星期二");
public static final Week2 wed = new Week2("星期三");

private String name;

private Week2(String name){
this.name = name;
}

public String getName() {
return name;
}
}

Demo3

public static void main(String[] args) {
  Week3 mon = Week3.mon;
  mon.show();
  Week3 tue = Week3.tue;
  tue.show();
  Week3 wed = Week3.wed;
  wed.show();
}

public static final Week3 mon = new Week3("星期一"){
public void show(){
System.out.println("星期一");
}
};
  public static final Week3 tue = new Week3("星期二"){//父类引用指向子类对象
  public void show(){
  System.out.println("星期二");
  };
};
public static final Week3 wed = new Week3("星期三"){
  public void show(){
    System.out.println("星期三");
  }
 };
private String name;

private Week3(String name){
this.name = name;
}

public String getName() {
return name;
}
//编写一个抽象方法
public abstract void show();

 Demo4

public enum Week {
MON("星期一"),TUE("星期二"),WED("星期三");

private String name;
private Week(String name){
this.name=name;
}
public String getName() {
return name;
}

}

 

public static void main(String[] args) {
Week mon = Week.MON;
Week tue = Week.TUE;
Week wed = Week.WED;
System.out.println(mon.getName());
}

posted @ 2018-01-15 16:20  老鱼SOHO  阅读(124)  评论(0)    收藏  举报