Java中,如何通过子类对象访问到父类的方法。比如父类有个A方法,public的,它的子类重载了A方法

也是public的。现在我该如何通过子类的对象,来访问到父类版本的A方法呢?由于多态,Father f = new Child(); f.A(); 这样只能调用到子类版本的A方法。所以希望能有高手帮下忙,thanks~
super.A(); 这只能用于在子类里面调用父类方法,但是现在父类和子类都已经声明过了,我不能去修改子类。我只能实例化子类,得到子类的对象而已。我就想有没有办法通过子类对象访问父类方法的。

第1个回答  2011-09-02
由于动态绑定,所以调用的是子类的A方法。如果一定要调用父类的,有这几个办法
1、:看看这个方法能否是static的?如果可以,改成static
2、 修改Child类,增加一个新方法B,B的实现为 super.A()。外部调用的时候改为
Child f = new Child(); f.B();
3、使用反射追问

1将这个方法改为static?好像没办法吧,子类或者父类都没办法改为static的,这样报错。
2这种方法可行
3具体怎么使用反射能给我讲讲吗?讲详细点,最好有例子,谢啦~~

本回答被提问者采纳
第2个回答  2011-08-31
Father f =new Child();这个时候f对象只能够当做父类对象使用,不能调用子类方法,建议你确认下。
抱歉我运行了下,还是子类的方法,1楼是对的,super.A();
public class Test extends Father {
public static void main(String[] args) {
Father f=new Test();
f.f();
}
public void f(){
super.f();
System.out.println("子类的方法");
}
}

class Father {

public void f() {
System.out.println("父类的方法");
}
}
第3个回答  2011-09-01
这个一定是就有父类的实例了 因为继承里已经说明 子类执行构造方法之前 一定会默认先执行父类的构造方法 !!
追问

...喊,父类的构造方法被调用,这不代表就产生了父类的实例。。而且,这和我的问题也没什么关系吧=。=

第4个回答  2011-09-01
用super.A()试试
第5个回答  2011-08-31
public void delete(int[] id) throws SQLException{
//假定conn ps 都获取到
Connection conn=null;
StringBuffer sql=new StringBuffer("delete from school where id in(");
for (int i = 0; i < id.length; i++) {
if (i==id.length-1)
sql.append(id[i]+")");
else
sql.append(id[i]+",");
}
PreparedStatement ps=conn.prepareStatement(sql.toString());
ps.execute();
}
相似回答