多态中调用成员方法和变量的区别:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Test {
public static void main(String[] args) {
Animal a=new Dog();
//调用成员变量:编译看左边,运行看左边
//如果左边的类中没有,就会向上找,直到找到为止
//如果没有找到,就会报错
System.out.println(a.name);//动物
//调用成员方法:编译看左边,运行看右边
//如果左边的类中没有,就会向上找,直到找到为止
//如果没有找到,就会报错
//但是运行时调用的是右边的方法
a.show();//Dog---show
}
}
class Animal{
String name="动物";
public void show(){
System.out.println("Animal---show");
}
}
class Dog extends Animal{
String name="狗";
@Override
public void show(){
System.out.println("Dog---show");
}
}