In Java, why can't I declare a final member (w/o initializing it) in the parent class and set its value in the subclass? How can I work around?

前端 未结 8 1251
长情又很酷
长情又很酷 2020-12-07 01:29

In a Java program, I have multiple subclasses inheriting from a parent (which is abstract). I wanted to express that every child should have a member that is set once only (

8条回答
  •  醉梦人生
    2020-12-07 02:02

    Why not delegate initialization to a method. Then override the method in the parent class.

    public class Parent {
       public final Object x = getValueOfX();
       public Object getValueOfX() {
          return y;
       }
    }
    public class Child {
      @Override
      public Object getValueOfX() {
         // whatever ...
      }
    }
    

    This should allow custom initialization.

提交回复
热议问题