一个基础的问题,大家帮帮忙!谢了!

lxbox 2004-08-29 10:48:10
结果为什么会是那样我不太明白!

class Meng
{
protected void one()
{
two();
System.out.println("One!");
}
protected void two()
{
System.out.println("Two!");
}
}
class Winner extends Meng
{
protected void two()
{
System.out.println("Winner!");
}
public static void main(String[] args)
{
Winner a = new Winner();
a.one();
}
}

结果为:Winner!
One!
...全文
65 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
andy_zhang_ping 2004-08-30
二楼说的对!
回复
lxbox 2004-08-29
自己定一下不好意思打扰了!
回复
lxbox 2004-08-29
兄弟们在帮忙一下好不?
回复
lxbox 2004-08-29
我执行a.one()是不是向上转型阿?
回复
austin909 2004-08-29
因为你执行的是a.one(),a是类Winner的对象,所以a.one()中的two()执行的是Winner中重载的two(),所以出现这样的结果。
回复
shine333 2004-08-29
这个就是叫多态。其行为方式就是如楼上几位所言。

如果还是搞不明白,那么就想你的标题所言,这个是个基础问题。初学的时候,没有必要完全搞清楚,只要知其然就可以了。
回复
Ardor007 2004-08-29
子类Winner覆盖了父类Meng的方法protected void two(),所以子类Winner的对象a在调用one()方法时,自动调用子类覆盖过的方法protected void two()。
回复
kkkkwx 2004-08-29
子类在调用时方法时,对于同样的(父类中有子类中也有),就会调用子类的方法
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2004-08-29 10:48
社区公告
暂无公告