有没有办法禁止子类在java中调用超类的公共方法?

tan*_*nou 0 java

有没有办法禁止子类在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,以防止这种情况?

Ale*_*lli 5

不,根据public您的定义,您无法停止调用该方法(无论是从派生类还是其他任何位置).您当然可以阻止它被覆盖(从而确保用于调用它的语法不会使用super;-)通过制作它final.