第三章ide
對於繼承:繼承是根據父類建立新子類的過程;函數
對於繼承:例:this
Public class Fatherspa
{
public void say()對象
{繼承
//dosomething生命週期
} 編譯器
}it
Public class Son:Fatherio
{
Public void say()
{
//dosomething
}
}
這這裏Son就隱藏了Father的say方法,也就是覆蓋了;
但C#裏但願這樣寫
Public class Son:Father
{
Public new void say()//多加一個new
{
//dosomething
}
}
這裏講講base關鍵字,上一章講this的時候提過:
Base是對父類的聲明:
在編譯器裏,」base.」後面就出現了父類裏的屬性和方法,而
「this.」就出現了本類裏額屬性和方法;就是這個區別;
對於對象的生命週期,課本上的那個例子挺好的:
例:
Public class Grandsire
{
Public Grandsire()
{
Consoler.WriteLine(「 調用Grandsire構造」);
}
~Grandsire()
{
Consoler.WriteLine(「 調用Grandsire析構」);
}
}
Public class Father:Grandsire
{
Public Father()
{
Consoler.WriteLine(「 調用Father構造」);
}
~Father()
{
Consoler.WriteLine(「 調用Father析構」);
}
}
Main()
{
Father f=new Father();
}
輸出:
調用Grandsire構造
調用Father構造
調用Father析構
調用Grandsire析構
對於這樣的結果,我就很少說什麼了,看療效吧
虛擬方法和重載方法:
這個考試中記住,在繼承父類虛擬函數是要用關鍵字override來重載
例:
Class Father
{
Public virtual void say()
{
//dothing
}
}
Class Father
{
Public override void say()
{
//dothing
}
}
抽象類:
對於抽象類的定義:
Abstract class
記住幾個要點:
抽象類裏面不必定都是抽象方法;
在抽象類裏定義抽象方法的時候,在子類繼承這個抽象父類時,若是子類也是否是抽象類,必須爲父類的抽象方法提供具體實現方法,要麼是override abstract修飾;
例:
Public abstract class Father
{
Abstract void say();
Abstract void do();
}
Class Son :Father
{
Public override say()
{
//dothing
}
Public override abstract void do();
}
抽象類和藉口同樣不能被實例化
密封類,關鍵字 sealed
Sealed calss
就是不讓繼承的類
若是給方法定義sealed 方法不容許重載;