1.什么是抽象類
抽象類是虛擬的類,不能創建對象,用abstract修飾,在子類中用override進行重寫
抽象類中可以存放抽象方法,屬性,也可以存放非抽象方法,屬性(這個在下面的代碼可以看出來的)
非抽象類中只能存放非抽象的方法(這個可以在下面的代碼中可以看出類)
如果子類也是抽象類,那么父類中所有的抽象方法,屬性不必全部實現; 如果子類不是抽象類,那么父類中所有的抽象方法,屬性必須全部實現(如果不實現會報錯,這個也可以觀察出來)
2.下面來看一下代碼的實現,來點干的
//先定義一個Car父類 abstract class Car { private string _name;//用private修飾的,只能在父類中使用 public string name//可以再子類中繼承使用 { get { return _name; } set { _name = value; } } public abstract void say();//抽象方法,必須在子類中重寫 public void start()//可以再子類中繼承使用 { Console.WriteLine("我是一輛車,我現在啟動了"); } } //定義一個Benz類,繼承Car class Benz:Car { public override void say()//在子類中重寫 { Console.WriteLine("我是大奔,我叫{0}",name); } } //定義一個BMW類,繼承Car class BMW:Car { public override void say()//在子類中重寫 { Console.WriteLine("我是寶馬,我叫{0}",name); } }
3.如果使用多態
定義一個父類的變量 Car b = new Benz();
b = new BMW();
先裝的是奔馳類,后來裝的是寶馬類,裝那個類,表現出那個類的特征,這就是多態
3.1 一個父類可以裝不同的子類,從而實現不同的形態
3.2 當一個父類被多個類繼承的時候,子類中的方法很多,而父類中的方法無法確定的時候,在父類定義個抽象方法,然后在子類中實現就可以了,在使用多態的時候,也可以直接使用