如何访问子类在其父类(super class)中声明的字符串变量?
我有类似这样的类(class):
public class Parent {
public void display() {
// displays A
}
}
public class Child1 extends Parent {
}
public class Child2 extends Parent {
}
Parent p1 = new Child1();
Parent p2 = new Child2();
p1.display(); // Currently displaying parent value of A
p2.display(); // Currently displaying parent value of A
如何确保在这个 display()
中,p1
和 p2
使用自己的 A 值,而不是父类?
最佳答案
(我正在编辑问题并回答问题;如果我误解了问题,请道歉。)
只要您不使用静态成员,所需的行为就是正常行为。在父类(super class)中将所需成员定义为 protected
;这三个类中任何一个的每个实例都将使用自己的值。
public class Parent {
protected string name;
public Parent() {
name = "Parent's value";
}
public void setName(string newValue) {
name = newValue;
}
public void display() {
System.out.println(name);
}
}
public class Child1 extends Parent {
public Child1() {
name = "Child1's value";
}
}
public class Child2 extends Parent {
public Child2() {
name = "Child2's value";
}
}
public static void main() {
new Parent().display();
new Child1().display();
Child2 c2 = new Child2();
c2.display();
c2.setName("New name!");
c2.display();
}
这会产生预期的输出:
Parent's value
Child1's value
Child2's value
New name!
关于java - 如何从父级的方法访问子级的继承成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703946/