一、基础概念
多态的调用方式在子父类中的特殊体现。
1.访问成员变量特点:
当子父类中出现同名成员变量时。
多态调用时,编译和运行都参考引用型变量所属的类中的成员变量。
即编译和运行看等号的左边。
2.访问成员函数特点:
当子父类中出现一模一样的函数时。
多态调用时,编译参考的是引用型变量所属的类,运行时参考的是对象所属类。因为函数有一个覆盖的特性。
即编译看左边,运行看右边。
3.访问静态函数特点:
当子父类中出现一模一样的静态函数时。
多态调用时,编译和运行都参考引用型变量所属的类中的静态函数。
即编译和运行看等号的左边。
二、实例代码
1 class Fu 2 { 3 int num = 4; 4 void show() 5 { 6 System.out.println("fu run ......"); 7 } 8 static void staticshow() 9 { 10 System.out.println("fu static show ......"); 11 } 12 } 13 14 class Zi extends Fu 15 { 16 int num = 5; 17 void show() 18 { 19 System.out.println("Zi run ......"); 20 } 21 static void staticshow() 22 { 23 System.out.println("Zi static show ......"); 24 } 25 } 26 27 class DuoTaiDemo2 28 { 29 public static void main(String[] args) 30 { 31 //访问成员变量 32 Fu f1 = new Zi();//多态向上转型 33 Zi z1 = (Zi)f1;//多态向下转型 34 System.out.println(f1.num); 35 System.out.println(z1.num); 36 37 //访问成员函数 38 Fu f2 = new Zi(); 39 Zi z2 = (Zi)f2; 40 f2.show(); 41 z2.show(); 42 43 //访问静态函数 44 Fu f3 = new Zi(); 45 Zi z3 = (Zi)f3; 46 f3.staticshow(); 47 z3.staticshow(); 48 } 49 }
三、代码运行