java 枚举不能继承_Java中的枚举类为何不能有public构造器

从Java 5開始有了枚举类,须要注意的是enum定义的类默认继承的是java.lang.Enum类而不是Object类。

同一时候注意枚举类不能派生子类(类的默认修饰符为final)。其原因基于它仅仅有private构造器。那为什么要设计成这样呢?

事实上非常easy想明确,所谓枚举类就是有包括有固定数量实例(而且实例的值也固定)的特殊类,假设其含有public构造器,那么在类的外部就能够通过这个构造器来新建实例,显然这时实例的数量和值就不固定了,这与定义枚举类的初衷相矛盾,为了避免这样的形象。就对枚举类的构造器默认使用private修饰。假设为枚举类的构造器显式指定其他訪问控制符,则会编译出错。

另外。注意枚举类的全部实例必须在其首行显式列出,否则它不能产生实例。

例如以下是一个使用枚举类的经典演示样例:

import java.util.*;

enum Planet

{

MERCURY,VENUS,EARTH,MARS,JUPITER,SATURN,URANUS,NEPTUNE

}

public class EnumSample

{

public void flyTo(Planet planet)

{

String destination="";

switch(planet)

{

case MERCURY:

destination="水星";

break;

case VENUS:

destination="金星";

break;

case EARTH:

destination="地球";

break;

case MARS:

destination="火星";

break;

case JUPITER:

destination="木星";

break;

case SATURN:

destination="土星";

break;

case URANUS:

destination="天王星";

break;

case NEPTUNE:

destination="海王星";

break;

}

System.out.println("The destination is "+destination);

}

public static void main(String[]args)

{

EnumSample sample=new EnumSample();

sample.flyTo(Planet.NEPTUNE);

}

}


版权声明:本文为weixin_39525243原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。