我想了解以下内容如何打印HelloWorldExtendedHelloWorld,false
。我希望它打印“true”,因为在whichMethod
类中覆盖了ExtendedHelloWorld
。如果这两个方法都是公共的和静态的,那么我认为它会更有意义,因为那时父方法和子方法都会存在,我会调用父方法,因为我使用的是HelloWorld
引用。然而,在这种情况下,方法不是静态的 - 所以我期望被覆盖。无论如何,父方法是私有的,如何从外部调用?有人可以帮忙吗?谢谢!
public class HelloWorld {
public HelloWorld() {
System.out.print("HelloWorld");
}
public HelloWorld(int age) {
System.out.print("HelloWorldAge");
}
private boolean whichMethod() {
return false;
}
public static void main(String[] args) {
HelloWorld example = new ExtendedHelloWorld(5);
System.out.println("," + example.whichMethod());
}
}
class ExtendedHelloWorld extends HelloWorld {
public ExtendedHelloWorld(int age) {
System.out.print("ExtendedHelloWorld");
}
public boolean whichMethod() {
return true;
}
}
答案 0 :(得分:3)
您没有扩展whichMethod方法,实际上无法扩展它,因为它是私有的。而且,它不被称为“外部”。主要方法在类中,因此私有方法对main是可见的。如果main方法在别处,则代码将无法编译,因为示例是一个HelloWorld变量,并且其中的私有whichMethod将不可见。