我观察到当我们从多态对象调用变量然后它调用父变量但是当我们调用具有相同多态对象的方法时它调用子方法的行为。为什么这是Java中的多态行为?为什么 Java 不以相同的方式处理多态变量和方法?
class Parent{
int age =10;
public void showAge(){
System.out.println("Parent Age:"+age);
}
}
class ChildOne extends Parent{
int age = 20;
public void showAge(){
System.out.println("child one age:"+age);
}
}
class ChildTwo extends Parent{
int age = 30;
public void showAge(){
System.out.println("Child Two Age:"+age);
}
}
public class Test{
public static void main(String[] args) {
Parent parentChildOne = new ChildOne();
System.out.println("parentChildOne.age: "+parentChildOne.age);
parentChildOne.showAge();
Parent parentChildTwo = new ChildTwo();
System.out.println("parentChildTwo.age: "+parentChildTwo.age);
parentChildTwo.showAge();
}
}
这是输出:
parentChildOne.age: 10
child one age:20
parentChildTwo.age: 10
Child Two Age:30