Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在抽象类中调用super_Java - Fatal编程技术网

Java 在抽象类中调用super

Java 在抽象类中调用super,java,Java,首先,我是一名C#开发者哈哈 我的程序中有一个名为Game的抽象类,它有一些方法可以执行更新和渲染游戏之类的操作。我只是想知道,在扩展类中调用超级方法是否合适,还是应该使用其他方法 public void initialize() { // Do a bunch of stuff here // and call the base method super.initialize(); // Is this proper coding convention for abs

首先,我是一名C#开发者哈哈

我的程序中有一个名为Game的抽象类,它有一些方法可以执行更新和渲染游戏之类的操作。我只是想知道,在扩展类中调用超级方法是否合适,还是应该使用其他方法

public void initialize()
{
    // Do a bunch of stuff here

    // and call the base method
    super.initialize(); // Is this proper coding convention for abstract classes, or should I use something different?
}

抽象类可以扩展其他类(抽象或非抽象),因此这是有效的

public class MySuperClass {
    public String getString(){ 
        return "Hello";
    }
}

public abstract class MyClass extends MySuperClass{
    public String getString(){
        return super.getString() + " world !";
    }
}
如果在超类中将此方法定义为抽象,则不能调用它。它不依赖于
抽象类
,而是依赖于
抽象方法

public abstract class MySuperClass {
    public abstract String getString();
}
给出一个编译错误:

无法直接访问MySuperClass中的抽象方法getString()

它既不是一般意义上的“适当”也不是“不适当”。您是否能够或应该这样做完全取决于您(或其他人)是如何设计超类的。如果您正在设计超类,您需要做的是决定:

  • 是否需要“初始化”(或其他)超类,以及
  • 是否应该在子类中方法的开始或结束时执行此操作

基本上由你来决定

是的,这是正确的调用首先,这与C无关,所以请删除C标记。第二,我不明白你的问题。为什么要调用super()?有原因吗?如果有,原因是什么?如果你没有理由,为什么要用它呢?如果你需要打电话给super,就这么做吧,没有什么错。