我在继承方面遇到了一些麻烦(学生在这里)。我需要能够为我创建的每个子类使用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方法来创建新的字段,从那里我很困惑。谁能帮助我指出正确的方向?
答案 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
。