1. 程式人生 > >修羅場第二天:C#之面向對象基礎(下)

修羅場第二天:C#之面向對象基礎(下)

dog 主函數 div 接口 對象 blank 返回值 情況 抽象

------------接(上)http://www.cnblogs.com/HoloSherry/p/7100795.html

  抽象類

    抽象類也可以實現多態,使用關鍵字abstract。那麽什麽時候用抽象類呢?

     當父類的方法不知道怎樣去實現的時候,此時可以將父類寫成抽象類,將方法寫成抽象方法。

以下是抽象類的特點:

抽象成員必須標記為abstract,而且不能有方法體;
抽象成員必須在抽象類中;
抽象類中可以有抽象成員,也可以有非抽象成員,非抽象成員可以給子類使用;
抽象類不能被實例化,也就是不能創建對象。
子類繼承抽象類後,必須把父類中所有的抽象成員都重寫(override)。
抽象成員的訪問修飾符默認是public,且不能被更改。
抽象類有構造函數,雖然不能被實例化,但是可以被子類所用。

      如果父類的抽象方法中有參數,那麽,繼承這個父類的子類在重寫父類的方法時也必須傳入對應的參數。如果抽象父類的抽象 方法中有返回值,那麽子類在重寫這個抽象方法時,也必須要傳入返回值。

    舉例子:   

 1 //動物叫的聲音各有不同,這裏我們用抽象類來實現
 2 //聲明Animal父類,Cat和Dog子類
 3 public abstract class Animal
 4 {
 5     public abstract void Bark();
 6 }
 7 public class Dog:Animal
 8 {
 9     public override
void Bark() 10 { 11 Console.WriteLine("狗汪汪叫"); 12 } 13 } 14 public class Cat:Animal 15 { 16 public override void Bark() 17 { 18 Console.WriteLine("貓喵喵叫"); 19 } 20 } 21 //在主函數中調用一下 22 static void Main(string[] args) 23 { 24 Animal cat=new Cat(); 25 cat.Bark();
26 Console.ReadKey(); 27 } 28 //最後結果:控制臺中輸出 貓喵喵叫

  接下來是實現多態的第三種方法:利用接口。

   接口的出現是為了解決一個類繼承多個類的情況,繼承的多個類實際上就是接口。

   接口有以下特點:

   接口是一種規範,一種能力,接口的功能單一,一個類繼承了一個接口,就必須實現這個接口中的所有成員,不能被實例化。

   接口不能繼承一個類,但是可以繼承接口,接口中不能有字段和構造函數。

舉例子:

  

修羅場第二天:C#之面向對象基礎(下)