为继承的字段

时间:2016-03-29 18:37:18

标签: java inheritance subclass private superclass

我在继承方面遇到了一些麻烦(学生在这里)。我需要能够为我创建的每个子类使用1个继承的私有字段。显然,子类不能访问继承的字段,但是当创建新对象时,继承的私有字段是该对象的一部分。出于我的目的,虽然每个子类都需要拥有该继承字段的特定值。我的第一次尝试看起来像这样:

Public class A {

    private int x = 0;

    public A(int n) {

        x = n;
    }

    public int useX() {

        return x;
    }
}

Public class B Extends A {
    int n = 1;

    public B() {
        super(n);
    }

    useX(); // Return 1?
}

Public class C Extends A {
    int n = 2;

    public B() {
        super(n);
    }

    useX(); // Return 2?
}

然而,我的教授告诉我,我也可以在我的Super类中使用setter方法来创建新的字段,从那里我很困惑。谁能帮助我指出正确的方向?

1 个答案:

答案 0 :(得分:3)

普通Java Bean提供public 访问者 mutators (又名 getters setters )对于它的领域。但是,可以提供protected二传手。像,

public class A {
    private int x = 0;

    public int getX() { // <-- the usual name.
        return x;
    }

    protected void setX(int x) {
        this.x = x;
    }
}

然后您的子类可以调用该setter

public class B extends A {
    public B() {
        super();
        setX(1);
    }
}

然后B.getX()(或B.useX()如果真的更喜欢)将返回1