多态的内存分析-转载

Posted 寂寞的小丑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态的内存分析-转载相关的知识,希望对你有一定的参考价值。

 

java运行时,在内存里分四个部分。栈,堆,数据区和代码区。。举个例子String str=new String("AAA");str就放在栈里,字符串"AAA"放在堆里。所有的方法代码都放在了代码区。

public class A{
public void show(){
System.out.println("A");
}
}


public class B extends A{
public void show(){
System.out.println("B");
}
public void say(){
System.out.println("B says");

}
}

当A a=new B()时,在栈里就有了一个a,而在堆里有个B的对象。。因为a是A类型的,所以它只能看到A里面所包含的属性和方法(此处的方法只是一个方法头,代码在代码区。。)。当调用show方法时,a先找到了自己的方法(头),然后到代码区去找方法体,发现有两个show方法.于是虚拟机会判断调用该方法的具体对象是什么,从而选择相应的方法。从而产生多态。而当调用say方法时,a没在自己代码里找到say方法,所以就不能通过了。。这也就解释了,为什么父类引用不能调用子类自己的方法了

以上是关于多态的内存分析-转载的主要内容,如果未能解决你的问题,请参考以下文章

为什么要有get方法?-多态内存分析的应用

linux 内存分析工具smem介绍--转载

转载深入分析 ThreadLocal 内存泄漏问题

利用jemalloc分析内存泄漏以及LD_PRELOAD--转载--可以为定位内存问题的雏形

[转载]NGINX原理分析 之 SLAB分配机制

c++头脑风暴-多态虚继承多重继承内存布局