Я пытаюсь понять, как ниже печатает HelloWorldExtendedHelloWorld,false
. Я ожидаю, что он напечатает «true», так как whichMethod
переопределяется в классе ExtendedHelloWorld
. Если бы оба метода были общедоступными и статичными, то я думаю, что с тех пор будет иметь смысл, и родительский, и дочерний метод будут существовать, и я бы назвал родительский метод, потому что я использую ссылку HelloWorld
. В этом случае, однако, методы не являются статическими, поэтому я ожидал, что тогда будет переопределено. В любом случае, родительский метод является приватным, как его можно вызывать извне? Кто-то может помочь? Благодаря!Метод Java скрыт, но не статичен
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;
}
}
Вы не распространяете метод и на самом деле не можете его продлить, поскольку он является частным. Также обратите внимание, что допустимо использовать пробел в коде. Я редактировал ваш код для удобочитаемости. –
Как это можно назвать извне? 'example.whichMethod()' – testTester
Это не называется «извне». Основной метод находится внутри класса, и поэтому частный метод видим для основного. Если основной метод был в другом месте, ваш код не будет компилироваться, так как пример - это переменная HelloWorld, а частный, который в нем не будет отображаться. –