在抽象类中调用super

时间:2017-06-16 11:52:01

标签: 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 abstract classes, or should I use something different?
}

2 个答案:

答案 0 :(得分:2)

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

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

public abstract class MyClass extends MySuperClass{
    public String getString(){
        return super.getString() + " world !";
    }
}

你不能调用此方法,如果在超类中它被定义为抽象。它并不取决于abstract class,而取决于abstract method

public abstract class MySuperClass {
    public abstract String getString();
}

发出编译错误:

  

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

答案 1 :(得分:0)

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

  • 是否需要“初始化”(或其他)超类,以及
  • 是否应该在子类中方法的开头或结尾处执行。

基本上由你决定......