是的你是对的。如果你正在扩展一个具有抽象方法的抽象类,你不能调用super.thatMethod(); 考虑下面的例子
public class RSAService {
protected void doRSA(){}
}
class MyService extends RSAService{
public void myService(){
super.doRSA(); //Works fine
}
}
这将工作作为doRSA()是从MyService
访问。同为public
而不是private
但
public abstract class RSAService {
protected abstract void doRSA();
}
class MyServe extends RSAService{
public void myService(){
super.doRSA(); //This won't work
}
@Override
protected void doRSA() {
}
}
现在考虑这种情况下,在那里你可以从你的子类
public abstract class RSAService {
protected void doRSA(){}
}
class MyService extends RSAService{
public void myService(){
}
@Override
protected void doRSA() {
super.doRSA();
}
}
所以,如果你来推翻调用super.superClassMethod()超类方法可以使用super
来调用方法。考虑这个Java Specification的链接以获得更多的说明
尝试一下,你会看到结果。 – 2015-02-06 09:38:02