为继承字段添加特定值
Adding specific values for inherited fields
我在继承方面遇到了一些麻烦(这里是学生)。我需要能够为我创建的每个 subclass 使用 1 个继承的私有字段。显然 subclasses 无法访问继承的字段,但是当创建新对象时,继承的私有字段是该对象的一部分。出于我的目的,尽管每个 subclass 都需要为该继承字段拥有自己的特定值。我的第一次尝试看起来像这样:
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 class 中使用 setter 方法来创建那个新字段,从那里我很困惑。谁能帮我指出正确的方向?
一个普通的 Java Bean 提供 public
accessors 和 mutators (又名 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()
如果你 真的 更喜欢)将 return 1
.
我在继承方面遇到了一些麻烦(这里是学生)。我需要能够为我创建的每个 subclass 使用 1 个继承的私有字段。显然 subclasses 无法访问继承的字段,但是当创建新对象时,继承的私有字段是该对象的一部分。出于我的目的,尽管每个 subclass 都需要为该继承字段拥有自己的特定值。我的第一次尝试看起来像这样:
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 class 中使用 setter 方法来创建那个新字段,从那里我很困惑。谁能帮我指出正确的方向?
一个普通的 Java Bean 提供 public
accessors 和 mutators (又名 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()
如果你 真的 更喜欢)将 return 1
.