嗨,我在书上看到了这段代码的片段。但不知怎的,我无法完全理解java如何在公共场所使用私有方法
package com.toro.employee2;
public class Deer {
public Deer() {
System.out.print("Deer");
}
public Deer(int age) {
System.out.print("DeerAge");
}
private boolean hasHorns() {
return false;
}
public static void main(String[] args) {
Deer deer = new Reindeer(5);
System.out.println("," + deer.hasHorns());
}
}
class Reindeer extends Deer {
public Reindeer(int age) {
System.out.print("Reindeer");
}
public boolean hasHorns() {
return true;
}
}
输出是DeerReindeer,false 我的问题是:
当我将Deer类hasHorns()方法更改为除PRIVATE之外的其他访问修饰符时,它将使用Reindeer类hasHorns()方法,从而返回true但如果Deer类hasHorns()方法使用PRIVATE访问修饰符,它将返回而不是假。
如果你能解释一下这是如何工作的话会很棒。
答案 0 :(得分:1)
private
方法不会被继承而不会被覆盖。因此,当您致电deer.hasHorns()
时,执行的方法为Deer#hasHorns
。实际上,如果您将main
方法从Deer
移到Reindeer
或其他类,那么这段代码就会失败。