java(二十六)【面向对象】多态中成员的特点
成员函数在多态中的特点:
在编译时期,参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有,编译失败
在运行时期,参阅对象所属的类中是否有调用的方法
成员函数在多态调用时,编译看左边,运行看右边
1 class Fu{ 2 void methon_1(){ 3 System.out.println("fu methon_1"); 4 } 5 void methon_2(){ 6 System.out.println("fu methon_2"); 7 } 8 void methon_4(){ 9 System.out.println("fu methon_4"); 10 } 11 } 12 class Zi extends Fu{ 13 void methon_1(){ 14 System.out.println("zi methon_1"); 15 } 16 void methon_3(){ 17 System.out.println("zi methon_3"); 18 } 19 } 20 class Huahua 21 { 22 public static void main(String [] args) { 23 Fu f=new Zi(); //运行时运行对象所属的类中的方法 成员函数在多态调用时,编译看左边,运行看右边 24 f.methon_1(); //该句运行的Zi类中的方法 25 f.methon_2(); 26 f.methon_4(); 27 // f.methon_3(); 该句编译失败(在编译时期,参阅引用型变量所属的类中是否有调用的方法) 28 } 29 }
运行结果:

成员变量在多态中的特点:无论编译还是运行,都参照左边(引用型变量所属的类)
1 class Fu{ 2 static int num=1; 3 void methon_1(){ 4 System.out.println("fu methon_1"); 5 } 6 void methon_2(){ 7 System.out.println("fu methon_2"); 8 } 9 void methon_4(){ 10 System.out.println("fu methon_4"); 11 } 12 } 13 class Zi extends Fu{ 14 int num=2; 15 void methon_1(){ 16 System.out.println("zi methon_1"); 17 } 18 void methon_3(){ 19 System.out.println("zi methon_3"); 20 } 21 } 22 class Huahua 23 { 24 public static void main(String [] args) { 25 Fu f=new Zi(); //成员变量在多态中的特点:不论编译还是运行,参照左边(引用型变量所属的类) 26 System.out.println(f.num); 27 Zi z=new Zi(); 28 System.out.println(z.num); 29 } 30 }
运行结果:

静态(static)成员函数在多态中的特点:不论是编译还是运行都参照左边(引用型变量所属的类)
1 class Fu{ 2 int num=1; 3 void methon_1(){ 4 System.out.println("fu methon_1"); 5 } 6 void methon_2(){ 7 System.out.println("fu methon_2"); 8 } 9 static void methon_4(){ 10 System.out.println("fu methon_4"); 11 } 12 } 13 class Zi extends Fu{ 14 int num=2; 15 void methon_1(){ 16 System.out.println("zi methon_1"); 17 } 18 void methon_3(){ 19 System.out.println("zi methon_3"); 20 } 21 static void methon_4(){ 22 System.out.println("zi methon_4"); 23 } 24 } 25 class Huahua 26 { 27 public static void main(String [] args) { 28 Fu f=new Zi(); 29 f.methon_4(); //静态(static)成员函数在多态中的特点:不论是编译还是运行都参照左边(引用型变量所属的类) 30 Zi z=new Zi(); 31 z.methon_2(); 32 } 33 }
运行结果:



浙公网安备 33010602011771号