child 不打印“child”的原因是在java的继承中,只有方法被继承,而不是字段。该变量output
不会被孩子覆盖。
你可以这样做:
public class Parent {
private String parentOutput = "hallo";
String getOutput() {
return output;
}
public void print() {
System.out.println(getOutput());
}
}
public class Child extends Parent {
private String childOutput = "child";
String getOutput() {
return output;
}
}
此外,字符串变量不需要是不同的名称,但为了清楚起见,我在这里这样做了。
另一种更易读的方法是这样做:
public class Parent {
protected String output;
public Parent() {
output = "hallo";
}
public void print() {
System.out.println(output);
}
}
public class Child extends Parent {
public Child() {
output = "child";
}
}
在此示例中,变量是protected
,这意味着它可以从父级和子级读取。类的构造函数将变量设置为所需的值。这样您只需实现一次打印功能,并且不需要重复的覆盖方法。