java之多态调用成员变量,成员函数,静态函数的特点

子类和父类之间存在多态时,我们来探讨一下编译和运行时候调用的特点:

先上代码:

[java]  view plain  copy
  1. class Fu  
  2. {  
  3.     int num = 3;  
  4.     void show()  
  5.     {  
  6.         System.out.println("fu show");  
  7.     }  
  8.     static void method()  
  9.     {  
  10.         System.out.println("fu static method");  
  11.     }  
  12. }  
  13.   
  14. class Zi extends Fu  
  15. {  
  16.     int num = 4;  
  17.     void show()  
  18.     {  
  19.         System.out.println("zi show");  
  20.     }  
  21.     static void method()  
  22.     {  
  23.         System.out.println("zi static method");  
  24.     }  
  25. }  
  26.   
  27. class DuoTaiDemo  
  28. {  
  29.     public static void main(String[] args)  
  30.     {  
  31.         //1成员变量被调用的情况。  
  32.         Fu f = new Zi();  
  33.         System.out.println(f.num);  // 输出3  
  34.           
  35.         //2 成员变量被调用的情况  
  36.         f.show();    // zi show  
  37.           
  38.         //3 静态函数被调用的情况  
  39.         f.method();  // fu static method  
  40.     }  
  41. }  

由运行结果我们可以分析得出:

1 调用成员变量的特点:

编译时,参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时,参考引用型变量所属的类中的是否有调用的成员变量,并运行该所属类中的成员变量。
简单说,编译和运行都参考等号的左边。

2 调用成员函数的特点:

编译时,参考引用型变量所属的类中的是否有调用的成员变量,有,编译通过,没有,编译失败。
运行时,参考的是对象所属的类中是否有调用的函数。
简单说:编译看左边,运行看右边。

3 调用静态函数的特点:

编译时,参考引用型变量所属的类中的是否有调用的成员变量
运行时,参考引用型变量所属的类中的是否有调用的成员变量
简单收:编译和运行都看左边。
其实对于静态方法,是不需要对象的,直接用类名调用即可。

猜你喜欢

转载自blog.csdn.net/nielinqi520/article/details/79281342
今日推荐