如何在抽象类中设置字段?

时间:2016-03-11 10:06:48

标签: java abstract access-modifiers

我有一个带有字段的抽象类,它应具有以下属性:

  • readonly for public interface
  • writeonly for subclasses

我现在的问题是:我该如何设置和初始化这个字段?

public abstract class A {
    // initialize it here ?
    private int field = 0;

    // initialize it in constructor ?
    protected A(int field)
    {
        this.field = field;
    }

    // use protected setter ?
    protected void setField(int val){
        this.field = val;
    }

    // or use protected field
    protected int field;

    public int getField(){
        return field;
    }
}

如何初始化/访问此字段?

public class B extends A {

    public B(int val){
        super(val);
        // or
        setField(val);
        // or
        field = val;
    }
}

并且使用smth是个好主意。像受保护的构造函数?

1 个答案:

答案 0 :(得分:1)

基本上是你的需要

如果你想在创建子对象时初始化超类字段,那么你可以调用super(val);

如果要创建独立于父对象的字段值的子对象。对子类使用默认构造函数,如果需要,在子对象上设置父值调用setField(val);方法。

  

使用smth是个好主意。像受保护的构造函数?

如果您真的想限制对包中类的访问,请单击