A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© linder_qzy 中级黑马   /  2015-3-9 16:28  /  570 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

总结:在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有编译通过,没有则编译失败
在运行时期:参阅对象所属的类中是否有调用的方法。
一句话就是:成员函数在多态调用时,编译看左边运行看右边。
两种特殊情况除外
1.多态中成员变量无论编译还是运行都参考左边(引用型变量所属的类)
2.在多态中,静态成员函数无论编译和运行都看左边(引用型变量所属的类)
  1. class Fu  
  2. {  
  3.     int num = 2;  
  4.     void method1(){  
  5.         System.out.println("Fu_method1");  
  6.     }  
  7.     void method2(){  
  8.         System.out.println("Fu_method2");  
  9.     }  
  10.     static void method4(){  
  11.         System.out.println("Fu_method4");  
  12.     }  
  13. }  
  14. class Zi extends Fu  
  15. {  
  16.     int num = 3;  
  17.     void method1(){  
  18.         System.out.println("Zi_method1");  
  19.     }  
  20.     void method3(){  
  21.         System.out.println("Zi_method3");  
  22.     }  
  23.     static void method4(){  
  24.         System.out.println("Zi_method4");  
  25.     }  
  26. }  
  27. class Demo04  
  28. {  
  29.     public static void main(String[] args)   
  30.     {  
  31.         /*(动态绑定)
  32.         下边编译失败,因为父类中没有method3方法。
  33.         总结:在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有编译通过,没有则编译失败
  34.         在运行时期:参阅对象所属的类中是否有调用的方法。
  35.         一句话就是:成员函数在多态调用时,编译看左边运行看右边
  36.         */  
  37.         Fu f = new Zi();  
  38.         f.method1();  
  39.         f.method2();  
  40.         //f.method3();//编译失败,因为父类中没有method3方法  
  41.   
  42.         //下边是2种特殊情况   
  43.         //1.多态中成员变量无论编译还是运行都参考左边(引用型变量所属的类)  
  44.         Fu fu = new Zi();  
  45.         Zi zi = new Zi();  
  46.         System.out.println(fu.num);//打印 2  
  47.         System.out.println(zi.num);//打印 3  
  48.         //2.在多态中,静态成员函数无论编译和运行都看左边(引用型变量所属的类)  
  49.         Fu fu_1 = new Zi();  
  50.         Zi zi_2 = new Zi();  
  51.         fu_1.method4();//打印 Fu_method4  
  52.         zi_2.method4();//打印 Zi_method4  
  53.     }  
  54. }  
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马