如下代码:
class A{
    public void foo(){print("aaaaa");}
}

class B extends A{
    public void foo(){print("bbbbb");}
}

如果想通过B的实例化变量来调用被override的父类的方法foo():

B b = new B();

在C++中(VC 6)可以两种途径;
1.  ((A)b).foo();
2.  A a = B();

在java中类似做法则行不通,依然访问的是子类方法。
而且,在java中好像达不到这个目的。

Feedback

# re: 疑惑:如何访问被覆盖父类的方法 -- java与C++类模型的一点差异  回复  更多评论   

2008-06-06 17:43 by Allen Liu
Super.foo();

# re: 疑惑:如何访问被覆盖父类的方法 -- java与C++类模型的一点差异  回复  更多评论   

2008-06-06 17:51 by Allen Liu
你这里的A.foo()与((A)b).foo();没什么两样吧?

# re: 疑惑:如何访问被覆盖父类的方法 -- java与C++类模型的一点差异  回复  更多评论   

2008-06-15 19:15 by bluoy
@Allen Liu
这儿不是指在实例类的内部调用,而是在实例类的外部如何使用呢?

只有注册用户登录后才能发表评论。


网站导航: