「java继承的方法内存图」java继承内存分析
今天给各位分享java继承的方法内存图的知识,其中也会对java继承内存分析进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java中子类对象和父类对象的内存模型图?
- 2、java继承中子父类的关系及内存结构是怎样的,父类中this表示子类对象,this.属性怎么表示父类的属性
- 3、谁能帮我画下java这个过程的内存图
- 4、求Java内存图
- 5、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继承的方法内存图的信息别忘了在本站进行查找喔。
发布于:2022-12-12,除非注明,否则均为
原创文章,转载请注明出处。