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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 史政法 中级黑马   /  2013-3-25 18:17  /  2584 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 史政法 于 2013-3-26 10:35 编辑

父类中的成员没有被私有,子类继承父类,子类中是什么情况?

父类中的成员被私有后,子类继承父类,子类中是什么情况?
  1. class  Demo
  2. {
  3.         public static void sop(Object obj)
  4.         {
  5.                 System.out.println(obj);
  6.         }


  7.         public static void main(String[] args)
  8.         {
  9.                 Zi z = new Zi();
  10.                 sop(z.getName());
  11.         }
  12. }

  13. class Fu
  14. {
  15.         private String name = "zhangsan";
  16.         String getName()
  17.         {
  18.                 return this.name;
  19.         }


  20. }
  21. class Zi extends Fu
  22. {
  23.         String getName()
  24.         {
  25.                 return name;
  26.         }
  27. }
复制代码
上面代码,另我疑惑的是:如果子类覆盖了父类中的获取方法,编译就会报错:第44行:name可以在Fu中访问private,return this.name
但是如果子类不覆盖父类中的获取方法,就可以直接获取到父类中私有的成员变量,什么情况?内存中是什么样的?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 07:10

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

11 个回复

倒序浏览
父类中的成员没有被私有,子类继承父类,子类继承了父类中的公共成员、保护成员(除了私有成员外)

父类中的成员被私有后,子类继承父类,但是并没有继承父类中的私有成员

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 史政法 于 2013-3-25 18:53 编辑
胡志超 发表于 2013-3-25 18:21
父类中的成员没有被私有,子类继承父类,子类继承了父类中的公共成员、保护成员(除了私有成员外)

父类中 ...

代码改过来了
回复 使用道具 举报
史政法 发表于 2013-3-25 18:28
class  Demo
{
        public static void sop(Object obj)

你这里的属性,并不是私有成员,字段是私有的
回复 使用道具 举报
胡志超 发表于 2013-3-25 18:31
你这里的属性,并不是私有成员,字段是私有的

刚才没写完,不知道怎么就发出去了,我又重新编辑了一下帖子,另我产生疑问的地方。。。。。。
回复 使用道具 举报
本帖最后由 史政法 于 2013-3-25 18:53 编辑
胡志超 发表于 2013-3-25 18:31
你这里的属性,并不是私有成员,字段是私有的

。。。。。。。
回复 使用道具 举报
子类可以继承父类的私有属性和方法,只不过看不到private修饰的内容,在后面可以通过反射来获取父类私有的属性和方法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
柳 德 彬 发表于 2013-3-25 18:42
子类可以继承父类的私有属性和方法,只不过看不到private修饰的内容,在后面可以通过反射来获取父类私有的 ...

如果说子类继承了父类的私有方法,不就相当于子类中也有一份了?为什么不能通过获取到呢?
回复 使用道具 举报
史政法 发表于 2013-3-25 18:56
如果说子类继承了父类的私有方法,不就相当于子类中也有一份了?为什么不能通过获取到呢? ...

可以这么说吧修饰符private把权限提升了,子类没有权限访问
回复 使用道具 举报
这位兄台,我代表毕老师鄙视你盗用他肖像这种行为
回复 使用道具 举报
这样,就记住一点就噢了,子类如果继承了父类,就可以把子类看做是父类全部+子类多出来的,这样就很明了了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
父类中的成员没有被私有,子类继承父类,子类继承父类所有的属性和方法。
Java中父类的私有属性与方法子类是继承不到的,所以子类也是不能访问父类的私有属性的。private 属性的变量是继承不下来的 属于父类私有变量 子类中并不存在

也这样理解 父亲的私房钱,他授权儿子能用,别人不能用,就用 protected 修饰这笔钱,如果外人也能用,就 public 修饰,如果只有自己能用,其他人都不行,就 private 修饰了。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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