「java继承的方法内存图」java继承内存分析

博主:adminadmin 2022-12-12 12:24:08 75

今天给各位分享java继承的方法内存图的知识,其中也会对java继承内存分析进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中子类对象和父类对象的内存模型图?

左边是栈空间,右边是堆空间,栈空间的变量t储存着一个指向堆空间某个对象的地址

java继承中子父类的关系及内存结构是怎样的,父类中this表示子类对象,this.属性怎么表示父类的属性

因为子类的方法覆盖了父类的了,就是说我继承了你的,但是先你的不好,改了,所以用子类的

谁能帮我画下java这个过程的内存图

super();   方法是指调用该类的父类的构造方法   super方法的参数个数,类型都与父类的构造方法一致,否则编译不通过

在此处 就相当于在 子类 Dog 中的 构造方法里 调用了 它的父类-Animal类中的构造函数Animal("小狗")

调用的结果就是把Dog类中的name属性赋值成了"小狗"。

这里需要注意的一点是:在构造方法中调用父类的构造方法时,super()方法必须写在构造方法的第一句,否则编译会不通过

求Java内存图

1)首先执行ParamTest t = new ParamTest();  创建对象。

2)执行 t.change(t.num);    在栈内存中创建变量i;赋值为t.num的值。调用change (int i)方法,i的值转变为5,执行完成之后,i变量消失。(相当于此句执行后,没有变化)

3)继续执行语句 t.change(t);  调用change( ParamTest t)方法 。首先在栈内存中创建一个变量 t (此处t不同于先前创建的对象t),讲创建的对象t的值传递给变量 t。

继续执行方法内部语句。创建对象tmp,并将tmp.num赋值为9。然后执行 t = tmp;语句,t指向 tmp指向的对象。

语句执行完成之后,变量t和tmp 消失。

因此此时输出对象t.num 的值仍然一直为 0。并为改变。

4) t = new ParamTest();   执行此语句, t 指向新创建对象。(原有对象遗留在堆内存中,没有引用指向它,故此时它已丢失。)

5)  t.add(t.num); 调用add(int i)方法。执行完成之后,i消失(同2))。

6)t.add(t);  调用 add(ParamTest t)方法。pt指向 t所指向的对象。执行语句,对象中 num 值变为20。 执行完成之后,变量 pt消失。

因此最后输出结果,num值改变为20 。

内存图如下:(栈内存中,灰色的变量表示在方法执行完成之后消失,它们所指向的对象无法通过它们的引用找到。)

java继承类的内存关系

这个问题你可以通过javap命令反编译发现,在child对象所占的内存中存放的是实际的变量而非

对parent对象的引用。

java继承的方法内存图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java继承内存分析、java继承的方法内存图的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-12,除非注明,否则均为首码项目网原创文章,转载请注明出处。