| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1860 人关注过本帖
标题:[分享]继承与多态的内存分析
取消只看楼主 加入收藏
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
结帖率:0
收藏
 问题点数:0 回复次数:1 
[分享]继承与多态的内存分析

前几天看了个视频,是用内存分析的方法讲继承与多态。。感觉比较好理解。。就拿来分享一下。

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方法,所以就不能通过了。。这也就解释了,为什么父类引用不能调用子类自己的方法了。。

搜索更多相关主题的帖子: 多态 内存 public AAA 
2007-09-18 10:40
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

还有前段时间讨论的子类this是否传给了父类。。我觉得子类和父类是同一个this,只是父类对这个this加了些限制。不能访问它的私有成员。。具体调用方法时,还是要看this实际是什么类型的。

2007-09-18 11:46
快速回复:[分享]继承与多态的内存分析
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012475 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved