gpt4 book ai didi

java - java中有没有办法禁止子类调用父类(super class)的public方法?

转载 作者:行者123 更新时间:2023-12-01 07:41:52 24 4
gpt4 key购买 nike

java中有没有办法禁止子类调用父类的public方法?

例如

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.

但我不希望 Dog 可以调用 super.quark(); 并且我也不想更改

动物中夸克方法的修饰符为私有(private)。有什么办法可以在编译时防止这种情况发生吗?

我这几天很困惑,谁能帮帮我......

我这样做的原因是我在开发hudson scm插件时遇到了类似的问题。I

创建了扩展 SubversionSCM 的类(官方类)。我只是想

重写父类(super class)的公共(public)方法,然后调用父类(super class)的公共(public)方法,如

示例。但是编译出错了。我不知道为什么,怎么办?剂量java有

诸如反射(reflection)方法之类的东西可以防止这种情况发生?

最佳答案

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

关于java - java中有没有办法禁止子类调用父类(super class)的public方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com