我在继承方面遇到了一些麻烦(这里是学生)。我需要能够为我创建的每个子类使用 1 个继承的私有(private)字段。显然,子类无法访问继承的字段,但是当创建新对象时,继承的私有(private)字段是该对象的一部分。出于我的目的,每个子类都需要为继承的字段拥有自己的特定值。我的第一次尝试看起来像这样:
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 方法来创建新字段,从那里我很困惑。谁能帮我指出正确的方向?
最佳答案
普通的 Java Bean 提供public
访问器和更改器(mutator)(又名getters和setters) 对于它的字段。但是,您可以提供一个 protected
setter。类似这样的东西,
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
.
关于java - 为继承字段添加特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292458/