繼承
繼承的特點:
a.派生類是對基類的擴展,派生類可以添加新的成員,但不能移除已經繼承的成員的定義。
b.繼承是可以傳遞的。如果C從B中派生,B又從A中派生,那么C不僅繼承了B中聲明的成員,同樣也繼承了A中聲明的成員。
c.構造函數和析構函數不能被繼承.
d.派生類如果定義了與繼承而來的成員同名的新成員,那么就可以覆蓋已繼承的成員,但這兵不是刪除了這些成員,只是不能再訪問這些成員。
e.類可以定義虛方法、虛屬性及虛索引指示器,它的派生類能夠重載這些成員,從而使類可以展示出多態性。
f.派生類只能從一個類中繼承,可以通過接口來實現多重繼承。
代碼實現:
namespace ConsoleApp1 { class Program { static void Main(string[] args) { Father f = new Father(); Childern c = new Childern(); grandChildren g = new grandChildren(); //f.Method(); c.fatherMethod(); c.Name = 1; g.Name = 2; Console.ReadKey(); } } public class Father { public int Name { get; set; } public void fatherMethod() { Console.WriteLine("父類的方法"); } } public class Childern : Father { public new void childerMethod() { Console.WriteLine("子類的方法"); } } public class grandChildren : Childern { public void grandMethod() { Console.WriteLine("孫子類的方法"); } } }
抽象類繼承:
class 繼承 { static void Main(string[] args) { 多態 d =new One(); d.Output(); Console.ReadKey(); } } public abstract class 多態 { public abstract void Output(); } public class One : 多態 { public override void Output() { Console.WriteLine("這是重寫后的"); } }
多態(重寫,重載):
重寫:往往是對於子類與父類而言.子類重寫父類的方法
重寫的方法:
a.重寫父類的方法要用到override關鍵字(具有override關鍵字修飾的方法是對父類中同名方法的新實現)
b.要重寫父類的方法,前提是父類中該要被重寫的方法必須聲明為virtual或者是abstract類型
c.要被重寫的方法添加virtual關鍵字表示可以在子類中重寫它的實現。(注意:C#中的方法默認並不是virtual類型的,因此要添加virtual關鍵字才能夠被重寫)
d.virtual關鍵字用於將方法定義為支持多態,有virtual關鍵字修飾的方法稱為“虛擬方法”
代碼實現:
namespace ConsoleApp1
{
class Program { static void Main(string[] args) { Father f = new Father(); Childer c = new Childer(); //f.Method(); c.fatherMethod(); Console.ReadKey(); } } public class Father { public virtual void fatherMethod() { Console.WriteLine("父類的方法"); } } public class Childer : Father { public override void fatherMethod() { Console.WriteLine("重寫后.子類的方法"); } } }
重載:在同一個類中,方法名相同,參數列表不同.
public class Reload
{
public void Get() { Console.WriteLine("無"); } public void Get(string name) { Console.WriteLine(name); } }