Java中的静态变量继承

Evg*_*rov 3 java inheritance static

public class Base{
        protected String str;

    public static final Base ERROR = new Base("error");
...
}

public class Derived extends Base{
        public static final Derived OTHER = new DERIVED("other");
        public Derived(String str) {
        super(str);
        }
    }

Derived page = Derived.OTHER; //OK
page = (Drived)Derived.ERROR; //ClassCastException
Run Code Online (Sandbox Code Playgroud)

那么我可以将静态成员变量从Base转换为Derived类吗?

NPE*_*NPE 12

你不能.

这是不可能投Derived.ERRORDerived,因为它不是一个实例Derived.这是一个例子Base.

它可能有助于消除混淆以实现这一点,Base.ERROR并且Derived.ERROR有两种方式来引用同一个对象.