2010-10-31 64 views
0
using System; 

class A 
{ 
    public virtual void F() { 
     Console.WriteLine("A.F"); 
    } 
    public virtual void G() { 
     Console.WriteLine("A.G"); 
    } 
} 

class B: A 
{ 
    sealed override public void F() { 
     Console.WriteLine("B.F"); 
    } 
    override public void G() { 
     Console.WriteLine("B.G"); 
    } 
} 

class C: B 
{ 
    override public void G() { 
     Console.WriteLine("C.G"); 
    } 
} 

在上面的問題,我想知道,C類有名稱F無()方法,我的意思是,如果我創建它的一個對象並訪問方法F()將它拋出錯誤或不?如果是的話,我想知道,因爲繼承類c應該有一個名爲f()類A的方法...所以我不能調用這個?密封關鍵字混亂

回答

2

您無法從派生類中刪除基類中的方法;那將違反LSP,並且可以通過簡單地投擲到基地而被輕易擊敗。 sealed關鍵字可防止任何派生類重寫該方法;它不會隱藏它。

+0

它意味着在類c中f()方法將與b類中的f()方法的行爲完全一致m我正確嗎?所以我們可以在c類對象上調用它,並且可以獲得b類的f()方法行爲 – NoviceToDotNet 2010-10-31 07:47:50

+0

是的,這是正確的。 'f'可用於'C'的實現和''C'的客戶端。 – 2010-10-31 07:51:54