[英]Is there any way to forbid the son class to call the public method of super class in 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.
但是我不希望狗可以調用super.quark(); 而且我也不想更改
將“動物”中的誇克方法修改為私有。 有什么辦法可以防止編譯?
幾天我很困惑,誰能幫助我.......
我這樣做的原因是我在開發hudson scm插件時遇到了類似的問題。
創建了擴展SubversionSCM的類(正式類)。 我只是想
覆蓋超類的公共方法,然后像
例。 但是編譯產生了錯誤。我不知道為什么,怎么辦? 劑量java有
類似反射方式來防止這種情況?
不,根據public
的定義,您不能阻止該方法的調用(無論是從派生類還是在其他任何地方)。 您當然可以通過將其設為final
來阻止其被覆蓋 (從而確保用於調用它的語法不會使用super
;-)。
不,沒有辦法擁有子類無法調用的公共方法。 您能做的最好的就是記錄此建議。
注意,它稱為子類或子類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.