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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kkopopo 中级黑马   /  2014-2-5 21:26  /  1103 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kkopopo 于 2014-2-6 12:02 编辑

图片中代码 求解析3个问题
1.num前面省略的是谁? this 还是 super?
2.内存中有几个num?
3.还望给个内存图解析一下

1.jpg (39.49 KB, 下载次数: 28)

1.jpg

2.jpg (19.84 KB, 下载次数: 23)

2.jpg

4 个回复

倒序浏览
我刚入门会的也不多,num前省略的应该是this
回复 使用道具 举报
  1. class Fu{
  2.         int num = 4;
  3.        
  4. }

  5. class Zi0 extends Fu{
  6.         void show(){
  7.                 System.out.println("num = "+num);//这个num是子类从父类继承而来的。num是父类的,也是子类的。。都是同一个num
  8.                 System.out.println( "this.num = "+this.num);
  9.                 System.out.println( "super.num = "+super.num);
  10.                
  11.                 /*打印结果
  12.                         num = 4
  13.                         this.num = 4
  14.                         super.num = 4
  15.        
  16.         */
  17.         }
  18. }

  19. class Zi1 extends Fu{
  20.         int num =5; //子类有与父类同名的变量num,就会把父类的num给隐藏了。
  21.         void show(){
  22.                 System.out.println("num = "+num);  //这里的num相当于this.num。这个num是自己的,父类的num被隐藏了。
  23.                 System.out.println( "this.num = "+this.num);
  24.                 System.out.println( "super.num = "+super.num);//如果要得到被隐藏的父类的num,应该使用super.num
  25.                
  26.                 /* 打印结果
  27.                        num = 5
  28.                         this.num = 5
  29.                         super.num = 4
  30.                  */
  31.         }
  32. }

  33. public class ExtendTest {

  34.         public static void main(String[] args){
  35.                 Zi0 z0 = new Zi0();
  36.                 z0.show();
  37.                 System.out.println("------------------");
  38.                 Zi1 z1 = new Zi1();
  39.                 z1.show();  
  40.                
  41.         }
  42. }
复制代码
回复 使用道具 举报 2 0
回复 使用道具 举报
希望对你有帮助

无标题.png (92.45 KB, 下载次数: 30)

无标题.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马