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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoya0o0o 中级黑马   /  2015-9-17 22:00  /  185 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. /*
  2. 多态中,成员调用的特点。

  3. 1,成员变量。
  4.         当子父类中出现同名的成员变量时。
  5.                 多态调用该变量时:
  6.                         编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。
  7.                         运行时期:也是调用引用型变量所属的类中的成员变量。
  8.                 简单记:编译和运行都参考等号的左边。
  9.                                 编译运行看左边。

  10. 2,成员函数。
  11.         编译,参考左边,如果没有,编译失败。
  12.         运行,参考右边的对象所属的类。
  13.                 编译看左边,运行看右边。
  14.        
  15.         对于成员函数是动态绑定到对象上。

  16. 3,静态函数。
  17.         编译和运行都参考左边。

  18.         静态函数是静态的绑定到类上。


  19. 【结论】
  20. 对于成员变量和静态函数,编译和运行都看左边。
  21. 对于成员函数,编译看左边,运行看右边。


  22. */
  23. class Fu
  24. {
  25.         int num = 3;
  26.        
  27.         void show()
  28.         {
  29.                 System.out.println("fu show run");
  30.         }
  31.         static void method()
  32.         {
  33.                 System.out.println("fu static method run");
  34.         }
  35. }
  36. class Zi extends Fu
  37. {
  38.         int num = 5;

  39.         void show()
  40.         {
  41.                 System.out.println("zi show run..");
  42.         }
  43.         static void method()
  44.         {
  45.                 System.out.println("zi static method run");
  46.         }
  47. }



  48. class DuoTaiDemo3
  49. {
  50.         public static void main(String[] args)
  51.         {
  52.                 /*
  53.                 //测试成员变量的多态调用。
  54.                 Fu f = new Zi();
  55.                 System.out.println(f.num);//3
  56.                 Zi z = new Zi();
  57.                 System.out.println(z.num);//5
  58.                 */
  59.                 /*
  60.                 //测试成员函数的多态调用。
  61.                 Fu f = new Zi();
  62.                 f.show();
  63.                 */
  64.                 //测试静态函数的多态调用。
  65.                 Fu f = new Zi();
  66.                 f.method();
  67.                 //注意:真正开发静态方法是不会被多态调用的,因为静态方法不所属于对象,而是所属于类。
  68.                 Fu.method();
  69.                 Zi.method();
  70.         }
  71. }
复制代码

0 个回复

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