[英]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.