java强制类型转换 内存分析

假如有代码
Cat 是Animal 的子类
Cat cat = new Cat();
Animal animal = new Animal();
cat=(Cat)animal;
在这个过程中内存中是什么情况,具体到每一步?
总共生成了几个对象?

new Cat(),new Animal()会在分配内存,之后的向下转型不会分配内存,只是栈空间里变量指向变化了,对象就New的两个。追问

为什么这个代码不会报错。。。。如果只是指向变了 为什么cat1.gender 是可以访问的。

追答

你这是向下转型,转型不就是为了有cat的属性么,虽然你本来就指向了对应的属性,拐了个父类的弯,由子到父又回到子了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-06
这叫上转型,把父类转变为子类Ok?
第2个回答  2015-07-30
对象有两个。追问

那第三行代码运行的时候 内存栈和内存堆 里面是什么情况呢 能不能详细一点

追答

java是面向对象的语言,是不需要理解其内存情况的,忘记内存!在c里面需要知道,java里面不需要知道

追问

。。。。我就是想知道这个问题的答案 ,只有从底层来看才知道发生了什么。。。。,我只想知道强制转型的时候发生了什么,

追答

。。。。。怎么说呢,这两个属于你自己定义的类型,他们的内置转化和基本类型的不一样,在我的理解里面应该是两者的内存空间改变了,即强制转换的被进入了接受者的空间里面。

追问

所以实际上内存中生成了3个对象?

追答

为什么是三个?两个

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网