2017-06-16 104 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

它既一般意義上的「適當」或「不適當」。你是否能夠做到這一點完全取決於你(或其他人)是如何設計超類的。如果你正在設計的超類,你需要做的是決定:

  • 是否有必要「初始化」(或其他)的超類,並
  • 是否應該在做子類中方法的開始或結束。

基本上它是由你來決定...