public class X
{
public void methodA() //Base class method
{
System.out.println ("hello, I'm methodA of class X");
}
}
public class Y extends X
{
public void methodA() //Derived Class method
{
System.out.println ("hello, I'm methodA of class Y");
}
}
public class Z
{
public static void main (String args []) {
X obj1 = new X(); // Reference and object X
X obj2 = new Y(); // X reference but Y object
obj1.methodA();
obj2.methodA();
}
}
Выход:
hello, I'm methodA of class X
hello, I'm methodA of class Y
Метод от типа объекта становится вызывается вместо ссылочного типа. Разве это не значит, что в обеих линиях это должно быть?
hello, I'm methodA of class X
hello, I'm methodA of class X
Может быть, ваше первое предположение неверно ... что это весело, учитывая, что вы правильно мечение вашего вопроса [тег: полиморфизм] – dotvav
@HovercraftFullOfEels моих плохого. Я имел в виду, что компилятор решает, можно ли вызвать метод. –