2017-04-15 67 views
0

這是我的代碼如何在c#中使用繼承限制方法訪問一個子類?

using System; 


public class parent 
{ 
    public virtual void m1(){ 

    } 
} 
public class child1:parent{ 

    public sealed override void m1(){ 

    } 
} 

public class child2:parent{ 

    public override void m1(){ //How to stop parent method here 

    } 

} 
public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine("Hello World"); 
    } 
} 

在上面的代碼中,我有三個類。在父類中包含一個虛擬方法,只能繼承到child1類。如何限制在c#.net中的child2類中繼承父方法。

+0

我沒有得到任何錯誤複製粘貼相同的代碼,它編譯得很好。 –

+0

我也沒有得到錯誤,但我想限制child2類中的父級方法 –

+0

如果你想讓一個類只用於'child1',爲什麼不把它變成一個私有的內部類呢?除非類中有更多其他類可以繼承的代碼。 –

回答

2

如果我從你的問題中明白,你想限制父類只需要被一個類繼承,並且沒有其他類需要從該類繼承。

簡單的答案是否定的。這是不可能的。

簡單的規則是,如果你已經使類公共類和方法虛擬,那麼它可以被n個類繼承。

+0

這就是接口很重要的原因。 –