我有一个关于 extend 的用法的问题,我无法理解。 对于该示例,我将使用两个类:
public class Father {
protected String message="Father";
public void printme(){
System.out.println(this.message);
}
}
和
public final class Son extends Father {
protected String message="Son";
}
我的问题是,为什么如果我调用:
new Son().printme();
它打印“父亲”?如何解决仅更改“Son”类的问题?
提前致谢
最佳答案
选项:
- 重写
printme
方法。 - 不是在
Son
中声明一个新字段,而是更改Father
字段的值(来自Son
,您可以这样做,因为它是保护 - 呃)
字段不是多态的。 Father
中引用 message
字段的代码将始终引用在 Father
中声明的变量。
我强烈建议:
- 您总是将字段设为私有(private),因此在这种情况下,您还想在
Father
中提供(比如说)一个公共(public) getter 和一个 protected setter
- 您不要像这样隐藏字段,部分原因是没有经验的开发人员会错误地认为正在进行某种覆盖
关于java - Java中重新定义一个引用(扩展使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7739808/