如下代码:
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
这儿不是指在实例类的内部调用,而是在实例类的外部如何使用呢?

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航: