有没有办法禁止子类在java中调用超类的公共方法?
例如
public abstract class TObject{
abstract public void quark();
}
public class Animal extends TObject{
public void quark(){
System.out.println("this is the animal");
}
}
public class Dog extends Animal{
@overide
public void quark(){
System.out.println("this is the animal");
**super.quark();**
}
}
In this example, The Dog call the **super.quark();** in it's quark method.
Run Code Online (Sandbox Code Playgroud)
但我不希望狗可以打电话给super.quark(); 我也不想改变
动物到私人夸克方法的修饰语.有没有办法在编译中防止这种情况?
我有几天困惑,谁能帮助我........
我这样做的原因是我在开发hudson scm插件时遇到了类似的问题.I
创建了扩展SubversionSCM(官方类)的类.我只是想
覆盖超类的公共方法,然后调用super的公共方法
例.但编译给出了错误.我不知道为什么,怎么办?剂量java有
像反映方式 s,以防止这种情况?
不,根据public您的定义,您无法停止调用该方法(无论是从派生类还是其他任何位置).您当然可以阻止它被覆盖(从而确保用于调用它的语法不会使用super;-)通过制作它final.