java 子类实例化时是否同时存在一个父类对象.

java子类实例化时是否同时存在一个父类对象.假如父类A中有个inta=1;子类B继承A,同时B中覆盖个inta=2;运行:Atest=newB();system.out... java 子类实例化时是否同时存在一个父类对象.
假如父类A中有个int a = 1;
子类B继承A,同时B中覆盖个int a = 2;

运行:
A test = new B();
system.out.println(test.a);

结果是1,是父类中的属性.这个时候是否存在父类对象,我的理解是存在的.
我又试,把父类用抽象abstract修饰,按理说abstract累不能实例化吧,肯定不能得到父类中的a属性,结果还是一样的.
怎么理解.
是不是创建子类对象,肯定会出现一个父类的对象?
展开
 我来答
xietianxiaowjj
2011-10-22 · TA获得超过105个赞
知道答主
回答量:31
采纳率:0%
帮助的人:23万
展开全部
不会产生父类对象,只是用了父类的构造函数而已,并不是用到构造函数就会产生对象,构造函数只是起对象初始化作用的,而不是起产生对象作用的,如果new A();即只有new语句才会产生父类A的对象。

变量是静态绑定 ,方法是动态绑定。 这里面变量在编译期间实现了变量调用语句与变量定义赋值语句的绑定,绑定的自然是父类的,因为调用时类型是父类的,所以值是父类中定义的值

其实你可以这么理解 创建了一个子类对象时,在子类对象内存中,有两份这个变量,一份继承自父类,一份子类。
绝对不会产生父类对象,父类中的成员被继承到子类对象中,用指向子类对象的父类引用调用父类成员,只不过是从 子类对象内存空间中找到那个被继承来的父类成员,也就是说实质是用子类对象调用变量a,这样就可以解释成员必须通过对象调用的规定,只不过这时调用的是子类对象中的继承自父类的a(子类对象中有两个a,一个继承自父类,一个属于自己)

哎,话说的有些乱。 这个问题也困惑我很久,上网查询发现很多人是错误的,最后找到几篇好的文章才明白,可能很多java老手也都会犯“产生父类对象”这个错误,最近才搞明白。

你自己想想,如果产生父类对象,如果父类是抽象类,抽象类允许产生对象吗?所以这种说法不严谨
08062400
2018-09-12 · TA获得超过118个赞
知道答主
回答量:114
采纳率:50%
帮助的人:27.8万
展开全部
第一,实例化子类不会实例化父类,所以不存在一个父类对象;
第二,构造方法只是为变量赋值,只是赋值;
第三,变量是编译期间静态绑定的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弘菀柳XI
2011-10-15 · TA获得超过1052个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:90万
展开全部
这其实是个多态的问题,
简单的理解为Java不支持属性字段覆盖(override),只支持方法覆盖,
换句话说,多态的含义是运行时对象行为发生了改变,但属性字段不发生改变,因为属性字段封装了数据,数据只能由方法或者说对象的行为发生改变

这和c#有点不同,c#字段也可以override
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
计科系zj
2011-10-15 · TA获得超过138个赞
知道答主
回答量:262
采纳率:0%
帮助的人:148万
展开全部
A test = new B();这行代码表明现在的test是父类引用,但是指向的是子类对象。子类对象在构造的时候会先调用其父类的构造方法,也就是说,在执行new B()的时候实际上先执行的是new A(),这样int a = 1;这条语句就被执行了,test引用虽然指向的是子类的对象,但是test对外仍然是A类型,故当你打印test.a的时候,就是父类A的属性a的值。只有当父类引用指向子类对象,且子类中重写了父类中的方法时,这种情况下,调用父类的被其子类重写的方法才会实际去执行被子类重写过的方法体,这就是Java中的多态,我想你不能理解的地方应该就是在这里了。多态的前提是:父类引用指向子类对象,且子类重写了父类中的方法。据我目前的理解(不一定是对的,哪位大侠如果明确的觉得错了请帮忙指正)属性应该是不存在什么多态的。希望能帮到你。
追问
你的意思是,创建一个子类,同时也创建了一个父类,,可以这么理解吗?
追答
可以这样理解吧,创建子类对象个过程中也创建了一个匿名的父类对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ymiqplgao
2011-10-14 · TA获得超过646个赞
知道小有建树答主
回答量:512
采纳率:0%
帮助的人:393万
展开全部
A test = new B();
关键在这一句,对象的上转型对象。
父类型 引用 = new 子类型();
父类型的引用指向子类的一个实例。
这里需要掌握的东西:
1 内存模型
2 extends权限 public protected private friendly
3 什么叫重写
4 this 与 super
5 RTTI 与 object slicing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式