2012-07-16 71 views
3

也許標題很混亂。重寫抽象方法時,我再次設置抽象是否正確?

讓我把你一個例子:

public abstract class Base 
{ 
    protected abstract void DoSomething(); 
} 

public abstract class BaseA : Base 
{ 
    protected abstract void DoSomething(); 
} 

public class ClassA1 : BaseA 
{ 
    protected override void DoSomething() 
    { 
     // do something! 
    } 
} 

public class ClassA2 : BaseA 
{ 
    protected override void DoSomething() 
    { 
     // do something! 
    } 
} 

有了這個代碼,它是從我真正的項目一個類似的場景。我有一個基類。但是我意識到基類需要再次抽象,所以方法DoSomething需要再次抽象,並且當我擁有具體類時我想覆蓋它。

是一個很好的做法?還是有問題,因爲我已經設置了抽象兩次的方法?

+0

另請參見[抽象方法重寫抽象方法](http://stackoverflow.com/questions/1768977/an-abstract-method-overrides-an-abstract-method),這是Stack Overflow上的一箇舊線程。 – 2013-07-27 14:50:04

回答

3

您並不需要在BaseA上聲明該方法;它的所有子類都將通過它的父類繼承它。

An abstract overrideis useful當你想重新定義一個具體的方法作爲抽象的子類。

+0

哦,沒錯!我沒有注意到這個!太感謝了! – 2012-07-16 01:26:34

相關問題