飄過來學C#系列(2)之------繼承

來源:互聯網
上載者:User

標籤:blog   使用   ar   sp   div   on   log   代碼   ad   

2.1 實現繼承和介面繼承

實現繼承:一個類型派生於一個基底類型,它用於基底類型的所有成員欄位和函數.

 class BaseClass    {        public string UserName = "C#";        public static string GetUserName()        {            return "";        }    }    class ImpleteClass:BaseClass    {        public string PrintName()        {            return GetUserName();            //return UserName        }            } 

 ImpleteClass類繼承BaseClass,就可以用基類中所有的成員欄位如UserName,GetUserName();

介面繼承 表示一個類型只繼承了函數的簽名,沒有繼承任何實現代碼.在需要制定該類型具有某些可用的特性時,最好

使用這種類型的繼承.

2.2 多重繼承

C#不支援多重實現繼承.但C#允許類型派生自多個介面---多重介面繼承.這說明

C#類可以派生自另一個類和任意多個介面.

2.3 Virtual關鍵字

virtual 關鍵字用於在基類中修飾方法。virtual的使用會有幾種情況:

1, 如果方法不是virtual的,編譯器就使用聲明的類對應的類型,也就是說,不是virtual的,在編譯時間候,就定了。比如下面的例子:子類的方法都沒有執行,執行的全部都是父類的方法。啟動並執行結果是
father
boy
girl

public class ClassFather    {        public string s1;        public void VirFun()        {            Console.WriteLine(s1);         }    }    public class ClassBoy : ClassFather    {        public new void VirFun()        {             base.VirFun();         }    }    public class ClassGirl : ClassFather    {        public new void VirFun()        {            base.VirFun();            Console.WriteLine(s1);        }    }    public class Test    {        public static void Main()        {            ClassFather a = new ClassFather();            a.s1 = "father";            a.VirFun();            ClassFather b = new ClassBoy();            b.s1 = "boy";            b.VirFun();            ClassFather c = new ClassGirl();            c.s1 = "girl";            c.VirFun();            Console.ReadKey();        }    } 

 2, 如果方法是Virtual的,然後子類使用了override, 編譯器就生產代碼。然後,在啟動並執行時候,進行檢測,看對象屬於哪個類,然後調用這個類的方法。啟動並執行結果是
father
boy
girl

girl

 public class ClassFather    {        public string s1;        public virtual void VirFun()        {            Console.WriteLine(s1);         }    }    public class ClassBoy : ClassFather    {        public override void VirFun()        {             base.VirFun();         }    }    public class ClassGirl : ClassFather    {        public override void VirFun()        {            base.VirFun();            Console.WriteLine(s1);        }    }    public class Test    {        public static void Main()        {            ClassFather a = new ClassFather();            a.s1 = "father";            a.VirFun();            ClassFather b = new ClassBoy();            b.s1 = "boy";            b.VirFun();            ClassFather c = new ClassGirl();            c.s1 = "girl";            c.VirFun();            Console.ReadKey();        }    } 

 3,如果一個父類的方法是virtual,子類不是用override,而是用new來覆蓋了,那麼運行子類的時候,還是執行聲明的類的方法。比如下面的例子中,girl類對象就是。

father
boy
girl

public class ClassFather    {        public string s1;        public virtual void VirFun()        {            Console.WriteLine(s1);         }    }    public class ClassBoy : ClassFather    {        public new void VirFun()        {             base.VirFun();         }    }    public class ClassGirl : ClassFather    {        public new void VirFun()        {            base.VirFun();            Console.WriteLine(s1);        }    }    public class Test    {        public static void Main()        {            ClassFather a = new ClassFather();            a.s1 = "father";            a.VirFun();            ClassFather b = new ClassBoy();            b.s1 = "boy";            b.VirFun();            ClassFather c = new ClassGirl();            c.s1 = "girl";            c.VirFun();            Console.ReadKey();        }    } 

  

 

 

飄過來學C#系列(2)之------繼承

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.