最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#繼承與多態(tài)使用示例

 更新時(shí)間:2014年01月13日 10:47:13   作者:  
繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特征之一,允許重用現(xiàn)有類(lèi)去創(chuàng)建新類(lèi)的過(guò)程。下面使用示例學(xué)習(xí)一下c#繼承與多態(tài)

繼承和多態(tài)

派生類(lèi)具有基類(lèi)所有非私有數(shù)據(jù)和行為以及新類(lèi)自己定義的所有其他數(shù)據(jù)或行為,即子類(lèi)具有兩個(gè)有效類(lèi)型:子類(lèi)的類(lèi)型和它繼承的基類(lèi)的類(lèi)型。

對(duì)象可以表示多個(gè)類(lèi)型的能力稱(chēng)為多態(tài)性。

多態(tài)性示例

復(fù)制代碼 代碼如下:

public class Parent
    {
        public Parent() { }
        public void MethodA()
        {
            Console.WriteLine("調(diào)用MethodA()");
        }
        public class Child:Parent
        {
            public Child() { }

            public void MethodB()
            {
                Console.WriteLine("調(diào)用MethodB()");
            }

        }
        class Test
        {

            static void Main(string[] args)
            {

                Parent oParent = new Parent();
                oParent.MethodA();//OK 調(diào)用類(lèi)型Parent的成員方法
                //Child oChild1 = (Child)oParent;//運(yùn)行錯(cuò)誤
                Child oChild=new Child();
                oChild.MethodB();//OK 調(diào)用派生類(lèi)Child的成員方法
                oChild.MethodA();//OK 調(diào)用基類(lèi)Parent的成員方法
                Parent oParent1 =(Parent)oChild;
                oParent1.MethodA();
                //oParent1.MethodB();//編譯出錯(cuò),類(lèi)型Parent不存在方法MethodB()
                Console.ReadLine();
                Child oChild1 = (Child)oParent1;
                oChild1.MethodB();//OK 調(diào)用派生類(lèi)Child的成員方法
                oChild1.MethodA();//OK 調(diào)用基類(lèi)Parent的成員方法
                Console.ReadKey();

            }
        }

    }

在上例中,類(lèi)Child既有效的Child,又是有效的Parent。oChild可以作為類(lèi)型Child,因而具有Child本身定義的方法MethodB()和基類(lèi)Parent定義的方法MethodA();同時(shí),對(duì)象oChild也可以強(qiáng)制轉(zhuǎn)換為Child的基類(lèi)Parent的對(duì)象oParent。強(qiáng)制轉(zhuǎn)換不會(huì)更改oChild對(duì)象的內(nèi)容,但oParent對(duì)象作為類(lèi)型Parent,因而只具有類(lèi)Parent定義的方法MethodA()。

將Child強(qiáng)制轉(zhuǎn)換為Parent后,可以將該P(yáng)arent重新強(qiáng)制轉(zhuǎn)換為Child。并只有實(shí)際上是Child實(shí)例的那些實(shí)例才可以強(qiáng)制轉(zhuǎn)換為Child,否則會(huì)產(chǎn)生運(yùn)行錯(cuò)誤:無(wú)法將類(lèi)型為Parent的對(duì)象強(qiáng)制轉(zhuǎn)換為類(lèi)型Child。

繼承的類(lèi)型

C#包含兩種繼承類(lèi)型:實(shí)現(xiàn)繼承和接口繼承。

現(xiàn)繼承表示一個(gè)類(lèi)型派生于一個(gè)基類(lèi)型,派生類(lèi)具有基類(lèi)的所有非私有(非Private)數(shù)據(jù)和行為。在實(shí)現(xiàn)繼承中,派生類(lèi)型的每一個(gè)方法采用基類(lèi)型的實(shí)現(xiàn)代碼,除非在派生類(lèi)的定義中指定重寫(xiě)該方法的實(shí)現(xiàn)代碼。實(shí)現(xiàn)繼承一般用于增加現(xiàn)有類(lèi)型的功能,或許多相關(guān)的類(lèi)型共享一組重要的公共功能場(chǎng)合。

接口繼承表示一個(gè)類(lèi)型實(shí)現(xiàn)若干接口,接口僅包含方法的簽名,故接口繼承不繼承任何實(shí)現(xiàn)代碼。接口繼承一般用于指定該類(lèi)型具有某類(lèi)可用的特性,例如,如果指定類(lèi)型從接口System.IDisposable中派生,并在該類(lèi)中實(shí)現(xiàn)IDisposable接口的清理資源的方法Dispose(),則可以通過(guò)工通的機(jī)制調(diào)用該方法以清理資源。由于清理資源的方式特定于不同的類(lèi)型,故在接口中定義通用的實(shí)現(xiàn)代碼是沒(méi)有意義的,接口即契約,類(lèi)型派生于接口,即保證該類(lèi)提供該接口規(guī)定的功能。

相關(guān)文章

  • C#中泛型類(lèi)和擴(kuò)展方法如何使用

    C#中泛型類(lèi)和擴(kuò)展方法如何使用

    這篇文章介紹了C#中泛型類(lèi)和擴(kuò)展方法的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • .net 隨機(jī)生成漢字

    .net 隨機(jī)生成漢字

    在c#中可以使用system.text來(lái)處理所有語(yǔ)言編碼,其中encodiong類(lèi)是比較重要的漢字編碼類(lèi),接下來(lái)我們就圍繞c#隨機(jī)生成漢字代碼講起,有需要的朋友可以參考下
    2015-08-08
  • C#中32位浮點(diǎn)數(shù)Float(Real)一步步按位Bit進(jìn)行分析

    C#中32位浮點(diǎn)數(shù)Float(Real)一步步按位Bit進(jìn)行分析

    這篇文章主要介紹了C#中32位浮點(diǎn)數(shù)Float(Real)一步步按位Bit進(jìn)行分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 初步認(rèn)識(shí)C#中的Lambda表達(dá)式和匿名方法

    初步認(rèn)識(shí)C#中的Lambda表達(dá)式和匿名方法

    這篇文章主要介紹了初步認(rèn)識(shí)C#中的Lambda表達(dá)式和匿名方法,本文著重講解Lambda表達(dá)式和匿名方法的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-01-01
  • C#在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建類(lèi)型的實(shí)現(xiàn)方法

    C#在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建類(lèi)型的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建類(lèi)型的實(shí)現(xiàn)方法,主要通過(guò)動(dòng)態(tài)生成C#代碼再編譯成程序集來(lái)實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類(lèi)型的,需要的朋友可以參考下
    2014-09-09
  • 詳解C#編程中一維數(shù)組與多維數(shù)組的使用

    詳解C#編程中一維數(shù)組與多維數(shù)組的使用

    這篇文章主要介紹了詳解C#編程中一維數(shù)組與多維數(shù)組的使用,包括數(shù)組初始化等基礎(chǔ)知識(shí)的講解,需要的朋友可以參考下
    2016-01-01
  • Unity shader實(shí)現(xiàn)遮罩效果

    Unity shader實(shí)現(xiàn)遮罩效果

    這篇文章主要為大家詳細(xì)介紹了Unity shader實(shí)現(xiàn)遮罩效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#實(shí)現(xiàn)BBcode轉(zhuǎn)為Markdown的方法

    C#實(shí)現(xiàn)BBcode轉(zhuǎn)為Markdown的方法

    這篇文章主要給大家介紹了關(guān)于C#實(shí)現(xiàn)BBcode轉(zhuǎn)Markdown的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • c# Thread類(lèi)線程常用操作詳解

    c# Thread類(lèi)線程常用操作詳解

    這篇文章主要介紹了c# Thread類(lèi)線程常用操作詳解的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • Unity實(shí)現(xiàn)瞄準(zhǔn)鏡效果

    Unity實(shí)現(xiàn)瞄準(zhǔn)鏡效果

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)瞄準(zhǔn)鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評(píng)論

新巴尔虎右旗| 洛宁县| 贞丰县| 伊春市| 双辽市| 全南县| 观塘区| 杨浦区| 扶沟县| 安乡县| 合肥市| 武隆县| 揭阳市| 绥江县| 封开县| 乐陵市| 桓台县| 揭西县| 周宁县| 雅江县| 靖远县| 南阳市| 上犹县| 赞皇县| 达尔| 那曲县| 江口县| 阜南县| 宣化县| 镇安县| 凤台县| 崇左市| 保定市| 苍山县| 盐亭县| 阜平县| 六安市| 三穗县| 乌兰察布市| 贵阳市| 翼城县|