重載的條件: 1.必須在同一個類中2.方法名必須相同3.參數列表不能相同。 重寫的條件: 1. 在不同的類中 2. 發生方法重寫的兩個方法返回值,方法名,參數列表必須完全一致 3. 子類拋出的異常不能超過父類相應的方法拋出的異常 4. 子類方法的訪問級別不能低於父類相應方法的訪問級別(public, ...
重載的條件: 1.必須在同一個類中2.方法名必須相同3.參數列表不能相同。
重寫的條件:
1. 在不同的類中
2. 發生方法重寫的兩個方法返回值,方法名,參數列表必須完全一致
3. 子類拋出的異常不能超過父類相應的方法拋出的異常
4. 子類方法的訪問級別不能低於父類相應方法的訪問級別(public,package,protected, private)
5.方法體不同
super()調用父類構造,super.只能調用父類的實例方法
this()調用該類的其他構造方法,this.調用類的屬性,方法
如果父類有有參構造,子類必須定義構造方法
重載:
重載發生在同一個類中;重載主要是針對同一個類中方法名相同但參數(必須的)不同或返回類型(不是必須的)不同的情況。可以參照如下的代碼
class OverLoadTest
{
public void Hello()
{
}
public void Hello(string str)
{
}
public string Hello()
{
}
}
在這段代碼中有三個具有相同名稱的方法Hello,他們彼此之間是重載的關係,註意兩點:他們共同存在於一個類中,雖有同樣的名字但是執行不同的操作;第一個方法和第三個方法只有返回類型不同,這在C# 中是不允許的,編譯器會報出“已定義一個名為"Hello"的方法”的錯誤。
重寫:
重寫發生在有繼承關係的類之間
重寫發生在派生類上,通過override關鍵字來改寫從其父類繼承過來的具有相同返回值,方法名稱和參數列表的方法。
class Program
{
static void Main(string[] args)
{
OverWriteTestTT owTT = new OverWriteTestTT();
owTT.Hello();
overWriteTestTTT owTTT = new overWriteTestTTT();
owTTT.Hello();
}
}
class OverWriteTest
{
//Over write the method ToString();
public override string ToString()
{
return "hello world";
}
//Define a virtual method Hello() to be over written
public virtual void Hello()
{
Console.WriteLine("hello");
}
}
class OverWriteTestTT : OverWriteTest
{
public override void Hello()
{
Console.WriteLine("No hello world");
}
}
class overWriteTestTTT : OverWriteTestTT
{
//Over write the method Hello() of class OverWriteTestTT
public override void Hello()
{
base.Hello();
Console.WriteLine("NNo hello world");
}
}