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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ake丶 中级黑马   /  2016-6-25 00:18  /  3307 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20黑马币
本帖最后由 Ake丶 于 2016-6-25 13:29 编辑

class Test {
     public static void main(String[] args) {
         dog d = new dog("旺财");
         System.out.println(d.getName());
          //dog类继承了父类的getName()方法,但是他没有name成员变量,getName()方法里的this.name,这个this不应该是“旺财”这个对象吗?这个对象存在堆中并没有name成员变量啊?
     }
}
class animal {
     private String name;
     public animal() {
     }
     public animal(String name) {
          this.name=name;
     }
     public void setName(String name) {
           this.name=name;
     }
     public String getName() {
           return this.name;
     }
}
class dog extends animal {
     public dog() {
     }
     public dog(String name) {
           super(name);
     }
}

最佳答案

查看完整内容

/dog类继承了父类的getName()方法,但是他没有name成员变量,getName()方法里的this.name,这个this不应该是“旺财”这个对象吗?这个对象存在堆中并没有name成员变量啊? 分析回答: 1.dog继承了父类,可以拥有父类的全部成员变量和方法,private修饰符表示只能在该类中被该类访问,并不是不能被继承,(只有final修饰的类不可被继承),所以dog有name的成员变量的;加上private修饰表示不能d.name这样去用,但是可以d.getName( ...

8 个回复

倒序浏览
/dog类继承了父类的getName()方法,但是他没有name成员变量,getName()方法里的this.name,这个this不应该是“旺财”这个对象吗?这个对象存在堆中并没有name成员变量啊?
分析回答:
  1.dog继承了父类,可以拥有父类的全部成员变量和方法,private修饰符表示只能在该类中被该类访问,并不是不能被继承,(只有final修饰的类不可被继承),所以dog有name的成员变量的;加上private修饰表示不能d.name这样去用,但是可以d.getName()得到名字,
2.this是代表d这个对象,这个对象的是Dog的实例,这个对象的名字属性是“旺财”,而不是说这个对象是旺财,
3.在堆内存中有这个成员变量,这个成员变量是一个引用变量,因为是name是字符串,不懂看内存图D:\内存图

内存图.png (119.53 KB, 下载次数: 32)

内存图.png
回复 使用道具 举报
本帖最后由 Ake丶 于 2016-6-25 23:21 编辑

通过this.getClass()知道了 调用getName()方法的是dog对象,对于对象没有name属性的问题:我觉得可能this.name是因为在父类的类中,所以能获取的到父类的成员变量吧。
回复 使用道具 举报
写的挺好的了
回复 使用道具 举报
this是谁调用就代表谁,name是父类的成员变量,getName调用的是父类Animal的getName()方法。继承是先在本类中找是否有成员变量或者成员方法,如果本类没有,就会调用父类的成员变量或成员方法。。。不知道这么说对不对
回复 使用道具 举报
LoveGG 发表于 2016-6-26 00:51
/dog类继承了父类的getName()方法,但是他没有name成员变量,getName()方法里的this.name,这个this不应该 ...

第一次回答问题,给个面子,不要吝啬,我真的需要!
回复 使用道具 举报
Ake丶 中级黑马 2016-6-26 11:36:22
7#
本帖最后由 Ake丶 于 2016-6-26 11:57 编辑
LoveGG 发表于 2016-6-26 00:53
第一次回答问题,给个面子,不要吝啬,我真的需要!

嗯,非常感谢这么用心地回答。
回复 使用道具 举报
涨姿势ing
回复 使用道具 举报
学习了一波
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马