2013-01-06 44 views
2

我的一些朋友正在互相爭論OOP的基本概念,是否可能在兩個不同的類中重載?在兩個不同的類中可能會超載

據我所知,重載只能在同一個類中完成,但是當涉及到不同的類時,它被稱爲覆蓋,這是它們兩個之間的主要區別。

我的理解是否準確?

回答

3

重載意味着具有多個名稱相同的方法。

如果重載在它們之間有繼承關係,那麼重載就有可能在不同的類中。

重載意味着一個類有一個父類,並具有與相同簽名,它明確希望使用代替的那些在父類的基類的方法。 C#使用override關鍵字來表示這一點。

public class Base 
{ 
    protected virtual void CanBeOverridden() {} 

    public void ToOverload() {} 

    // An overload of ToOverload in the Base class 
    public void ToOverload(int param) {} 
} 

public class Child : Base 
{ 
    // override 
    protected override void CanBeOverridden() {} 

    // An extra overload of ToOverload in the child class 
    public void ToOverload(string param) {} 
} 
1

超載有可能在不同的類別:

class Class1 
{ 
    public void Function1(string param1); 
} 

class Class2 : Class1 
{ 
    public void Function1(string param1, string param2); 
} 

然後你有2個選項功能1

+0

我不同意,這是考慮到由於在2個不同的類別超載...'Class2'它來自'Class1'的事實包含一個'Function1(string param1)'方法,並且你用同一個類中的'Function1(string param1,string param2)'來重載它。 – psubsee2003

+0

在roeland:它會給你兩種不同的方法,不同類型的方法試圖做到這一點 –

+0

我已經做到了這一點, –

相關問題