java 父类普通方法中调用重写方法,省略的this代表的是谁,希望提供完整说明

classFu{voidshow(){this.doSome();}voiddoSome(){System.out.print("fu");}}classZiextend... class Fu

{
void show()

{

this.doSome();

}

void doSome()

{

System.out.print("fu");

}

}
class Zi extends Fu
{
void doSome()

{

System.out.println("zi");
}

}

void main()
{
Zi z = new Zi();

z.show();

}
希望告诉我实际内存中是怎么执行的
展开
 我来答
丁云风
2014-09-29 · 超过14用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:27.4万
展开全部
this关键字代表的是当前类的引用,你这里new了一个子类对象,调用从父类那里继承的show()方法,就像是子类也有一个一样的show()方法,所以这里this 代指引用对象z,在执行this.doSome(),实际就是执行z.doSome(),希望可以帮到你
大学作业题库
2014-10-01 · 知道合伙人互联网行家
大学作业题库
知道合伙人互联网行家
采纳数:149 获赞数:180
农民出身,单身一位。书写代码过10万行,没读过书。现任利得财富资深酱油人。

向TA提问 私信TA
展开全部
内存中怎么执行 只有 写 jvm 的才能说明百!
我只说下简单的 流程, 首先, 你的 Zi 写了继承Fu, 所以 Fu 中的 代码都会被继承到 Zi 中。
然后 你的Zi 重写了 Fu 中的doSome ,当java 代码执行的时候 首先会搜索 自己 的类中有没有,如果有 就执行自己的,如果没有就到父类中去找,如果还没有 就到父类的父类中去找。。。等。。。。

在 你上面的代码中可以看到 明显的 在 Zi 走就有 所以执行 show 之后 就打印了zi,虽然你的 show 是父类中的一个方法,你只要记住是从 自类向父类搜索就可以了。
你可能纠结为什么是 zi 而不是 fu 还是之前说的,应为你是 重写 ! 重写和覆盖是有区别的。
具体的可以看 http://www.xiaoyunduo.org/article/99/
你的问题是 重写和覆盖的问题 和有么有 this 没有半点关系,不信的话你写上this 和不写this 都执行以下就清楚明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
打醋的酱油男
2014-09-27 · 超过23用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:30.8万
展开全部
this代表Fu类对象。具体在内存中是怎么执行的,我也不知道。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loving4rong
2014-09-27 · 超过28用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:56.5万
展开全部
this代表是子类对象 不要误导人
追问
能否说一下内存中的执行过程
追答
当java对象被new到堆内存时,它除了包含成员变量和成员方法外,还包含一个this引用,这个引用指向该对象本身。可以这么认为,this相当于一个指针,它指向对象本身,同时它还在对象内部。用this.可以调用该对象的成员变量和成员方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式