2017-06-16 110 views
-6

首先,我是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? 
} 
+1

是的,这是正确的呼叫 – ByeBye

+2

首先,这没有什么用C#这样做删除C#标签。其次,我不明白你的问题。你为什么想打电话给super()?有没有理由,如果是的话,是什么?如果你没有理由,你为什么要使用它? – Pickle

+2

如果你需要打电话给超级,那就做吧,没有错。 – tak3shi

回答

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(); 
} 

给编译错误:

抽象方法的getString()在MySuperClass不能直接访问

0

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

  • 是否有必要“初始化”(或其他)的超类,并
  • 是否应该在做子类中方法的开始或结束。

基本上它是由你来决定...