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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© crazy_primitive 中级黑马   /  2013-7-7 23:46  /  1700 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class person
{
         private int age;
         private String name;
         
         public int getAge()
         {
                 return age;
         }
         
}
class work extends person
{
         public int getAge()
         {                                   //getAge() 是继承过来的,方便大家看,我写在work类中..
                 return age;
         }
}
public class Demo
{
         public static void main(String[] args)
         {
                 work p=new work();
                 System.out.print(p.getAge());
         }
}
这里因为简洁点,我让age和name是默认值..
我想问的是:work类在继承person类的时候,没有继承属性,只继承了一个getAge()方法..
为什么work类创建的对象访问getAge方法的时候,为什么会返回age的默认值,work里不是没有age属性
嘛,我也知道返回的是父类里的age属性..我就是想知道子父类在内存中是怎样操作的?谁能帮我画个简
洁点的内存图 分析下?

2 个回复

倒序浏览
我想了一下,谈下我的理解吧,

打比方你就是父类,你有儿子继承你,你的东西他都可以继承,但是你有些东西是不想让他知道的,例如:你的某些不良癖好,你就给他加个修饰符private私有起来,那这个就只有你自己可以访问,任何都不可以了,不存在什么原理的,别想复杂了,私有就是私有,这个就跟法律一样,是java中的法律,规则。

至于内存图,你定义的成员变量在内存中的栈空间中,私有后就只有自己可以访问,而子类继承的时候,子类的栈空间中是没有该成员变量的。
回复 使用道具 举报 1 0
qmlovewhr 发表于 2013-7-7 23:50
我想了一下,谈下我的理解吧,

打比方你就是父类,你有儿子继承你,你的东西他都可以继承,但是你有些东 ...

嗯,好像有些明白了,谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马