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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 辉Se天空 于 2015-3-28 20:52 编辑

在回头看视频中遇到的一个小细节,采用毕老师的代码如下
  1. class Fu
  2. {
  3.          int num = 5;
  4.         void method1()
  5.         {
  6.                 System.out.println("fu method_1");
  7.         }
  8.         void method2()
  9.         {
  10.                 System.out.println("fu method_2");
  11.         }
  12.         static void method4()
  13.         {
  14.                 System.out.println("fu method_4");
  15.         }
  16. }


  17. class Zi extends Fu
  18. {
  19.         int num = 8;
  20.         Zi()
  21.         {
  22.                 num = 8;
  23.         }
  24.         void method1()
  25.         {
  26.                 System.out.println("zi method_1");
  27.         }
  28.         void method3()
  29.         {
  30.                 System.out.println("zi method_3");
  31.         }

  32.         static void method4()
  33.         {
  34.                 System.out.println("zi method_4");
  35.         }
  36. }
  37. class  DuoTaiDemo4
  38. {
  39.         public static void main(String[] args)
  40.         {
  41.                 Fu f = new Zi();
  42.                 System.out.println(f.num);
  43.                 }
  44. }       
复制代码

这个的结果是5,因为   在多态中,无论静态和动态成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
num = 8;  这一句仅仅是改变了Zi类中的nu,即这一句完整的写法为this.num=8;
如果我们去掉
int num = 8;
这一句Zi类中的成员变量重写结果会输出 8。
或者我们也可以修改num = 8; 这一句为super.num=8;

细节问题大神勿嘲笑,仅供和我一样的菜鸟参考学习

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

1 个回复

正序浏览
谢谢提醒,概念更清晰了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马