public final class AllColor {
public static final AllColor RED = 
new AllColor("red");
public static final AllColor GREEN = 
new AllColor("green");
public static final AllColor YELLOW = 
new AllColor("yellow");
private AllColor(String color){
System.out.println(color);
}
public static AllColor[] getAll(){
AllColor[] ac = {RED,GREEN,YELLOW};
return ac;
}
public enum AllColorEnum {
    RED,GREEN,YELLOW;
}
小弟初学java,上面的Allcolor类也可以也可以实现AllColorEmun的功能,老师说加上final是为了防止对AllColor中方法的重写。AllColor的构造已经隐藏了,小弟觉得没有必要在加上final了啊,请大侠们解答一下了啊。

解决方案 »

  1.   

    不小心把enum打成了emun了
    希望大侠们包涵啊
      

  2.   

    默认!没有隐藏呀!如果没有构造函数,那么JVM提供默认无参构造函数。
      

  3.   

    你说的final是指public final class AllColor 中的这个吧。这个加上final是为了不让别的类继承,因为如果别的类可以继承的话,可以写上其他的方法了,如蓝灯紫灯等这个不符合面向对象思想的方法。
      

  4.   

    加上final是为了防止修改。
    比如不加的话你可以这样
    AllColor. RED =AllColor.Green;
    那枚举的意义就被破坏了。
      

  5.   

    推荐采用interface定义,然后静态引用
      

  6.   

      加上final,防止被继承啊,如果被继承,public enum AllColorEnum 可以被修改的被谁修改的你就不知道了(因为你不知道都有谁继承了)