a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

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

2020-01-24 02:55:06
字體:
供稿:網(wǎng)友

繼承和多態(tài)

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

對象可以表示多個(gè)類型的能力稱為多態(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)用類型Parent的成員方法
                //Child oChild1 = (Child)oParent;//運(yùn)行錯(cuò)誤
                Child oChild=new Child();
                oChild.MethodB();//OK 調(diào)用派生類Child的成員方法
                oChild.MethodA();//OK 調(diào)用基類Parent的成員方法
                Parent oParent1 =(Parent)oChild;
                oParent1.MethodA();
                //oParent1.MethodB();//編譯出錯(cuò),類型Parent不存在方法MethodB()
                Console.ReadLine();
                Child oChild1 = (Child)oParent1;
                oChild1.MethodB();//OK 調(diào)用派生類Child的成員方法
                oChild1.MethodA();//OK 調(diào)用基類Parent的成員方法
                Console.ReadKey();

            }
        }

    }

在上例中,類Child既有效的Child,又是有效的Parent。oChild可以作為類型Child,因而具有Child本身定義的方法MethodB()和基類Parent定義的方法MethodA();同時(shí),對象oChild也可以強(qiáng)制轉(zhuǎn)換為Child的基類Parent的對象oParent。強(qiáng)制轉(zhuǎn)換不會更改oChild對象的內(nèi)容,但oParent對象作為類型Parent,因而只具有類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,否則會產(chǎn)生運(yùn)行錯(cuò)誤:無法將類型為Parent的對象強(qiáng)制轉(zhuǎn)換為類型Child。

繼承的類型

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲情综合五月天 | 国产伦精品一区二区三区视频网站 | 欧美激情在线播放 | 精品在线免费视频 | 色婷婷综合在线 | 蜜桃av人人夜夜澡人人爽 | 韩国三级中文字幕hd爱的色放 | 日本综合色 | 国产精品久久久久久久久久免费 | 毛片毛片毛片毛片毛片毛片 | 日韩激情一区二区 | 国产精品一区二区三区免费观看 | 欧美激情小视频 | 欧美级毛片 | 男女做爰高清无遮挡免费视频 | 国产精品国产成人国产三级 | 福利影视 | 国产成人在线视频观看 | 久久久久久成人精品 | 欧美日韩中文字幕 | 精品国产91久久久久久久 | 亚洲一区中文字幕 | 高清不卡一区 | 伊人网综合视频 | 日韩专区一区二区 | 日韩在线观看精品 | 久久av一区二区三区 | 成人欧美一区二区三区黑人 | 久久99视频| 国产成人精品午夜在线播放 | 在线欧美日韩 | 色欧美色 | 91偷拍精品一区二区三区 | 成人黄色免费 | 四虎在线观看 | 欧美第7页 | 中文字幕成人在线视频 | 日本视频免费看 | 久草综合网 | 综合久久综合久久 | 日韩亚洲欧美一区二区 |