【发布时间】:2016-07-17 11:45:44
【问题描述】:
我在继承方面遇到了一些麻烦(这里是学生)。我需要能够为我创建的每个子类使用 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 方法来创建新字段,从那里我很困惑。谁能帮我指出正确的方向?
【问题讨论】:
-
您发布的代码无法编译(
B和C中没有n,在super之前您无法执行任何操作)。如果你解决这个问题,我认为你的方法是正确的。使用构造函数是一种初始化值的好方法,无需对值进行不必要的无限制访问。 -
我刚刚在声明中省略了 int 。我修好了
标签: java inheritance subclass private superclass