Почему бег
Larry var3 = new Jerry();
var3.method3();
выводить ошибку вместо
larry 1
harry 1
mary 3
Я думаю, это может иметь какое-то отношение к способу создания объекта. Но это всего лишь мои предположения.
Это код:
public class Harry {
public void method1() {
System.out.println("harry 1");
}
public void method2() {
method1();
System.out.println("harry 2");
}
}
public class Larry extends Harry {
public void method1() {
System.out.println("larry 1");
super.method1();
}
}
public class Mary extends Larry {
public void method2() {
System.out.println("mary 2");
}
public void method3() {
super.method1();
System.out.println("mary 3");
}
}
public class Jerry extends Mary {
public void method2() {
super.method2();
System.out.println("jerry 2");
}
}
@Carcigenicate Это онлайн-задание на сайте Practice-it. Вы либо указываете вывод кода, либо вводите «ошибку», если в противном случае. При использовании указанного выше метода ошибка является правильным ответом.
Затем вам следует вставить код в реальную среду, даже в онлайн-компилятор, и запустить его. Вы не можете ожидать, что сможете правильно отладить свой код на предмет ошибок, если даже не знаете, в чем заключается ошибка.
@Carcigenicate Я новичок в Java, я только начал главу "Полиморфизм" несколько дней назад. Мне просто нужно знать, почему метод не работает.




Использовать
((Mary) var3).method3();
и он будет работать нормально.
Спасибо за ответ, но я спрашивал, почему метод не работает с созданным объектом.
Larry var3 = new Jerry(); // casting Jerry to Larry.
var3.method3(); // there is no Larry.method3 method.
// You need downcast object to derived class with method3() defined to call it
Какая ошибка? Это всегда важно.