日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型

發(fā)布時間:2024/9/3 C# 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.接口

1.1簡介:

接口是一種特殊的引用類型, 和類很相似. 它定義了屬性, 方法, 事件, 這些都作為接口的成員/ 接口中只包含成員的聲明, 成員的定義是派生類的責(zé)任(誰繼承誰實現(xiàn)).

接口在某種程度上與抽象類類似, 但是接口大多數(shù)只用在當(dāng)只有少數(shù)方法由基類聲明由派生類實現(xiàn)時.

其實接口主要就是用來解決多繼承問題的;

1.2 接口的定義

接口使用 interface 關(guān)鍵字聲明,它與類的聲明類似, 聲明默認(rèn)為 public .

interface

栗子

// 定義一個陸地生物接口

再次注意:方法默認(rèn)就是抽象的, 所以不用加abstract關(guān)鍵字, 加了反而會報錯;

1.3 接口實例

讓 Dog 類繼承 ITerrestrial 接口

class

Fish 類繼承 IAquatic 接口

class

執(zhí)行代碼

static

1.4 接口多繼承

  • 派生類可以繼承多個接口, 但是對繼承過來的接口方法需要實現(xiàn);
  • 派生類可以同時繼承類跟接口, 但是基類只能有一個, 接口不受限制;
  • 多繼承中間用逗號分隔連接;

例如 讓青蛙類繼承 ITerrestrial 接口和 IAquatic 接口

// 繼承多個接口直接用逗號隔開即可

實現(xiàn):

// Main 函數(shù)

接口的特點:

  • 可以多繼承. 當(dāng)繼承同時有類和接口時, 類放在前面, 接口放在后面;
  • 接口不允許直接實例化(可以通過子類間接實例化);
  • 接口都是抽象的, 方法前不允許加訪問修飾符(默認(rèn)就是公開, 也只能是公開的);
  • B接口繼承A接口, C繼承B接口 C要實現(xiàn)A B中的所有方法;
  • 接口中不允許有構(gòu)造方法, 析構(gòu)方法, 靜態(tài)成員和常量;
  • 接口中可以有抽象屬性;
  • 接口和抽象類的區(qū)別(重點!!!):

    相同點:

  • 都包含抽象成員, 可以由子類繼承;
  • 兩者不能直接實例化;
  • 都屬于引用類型;
  • 它們都有多態(tài)性;
  • 不同點:

  • 接口中所有成員都是抽象的(且不加abstract 關(guān)鍵字), 而抽象類除了抽象成員還有非抽象成員;
  • 抽象類是類, 在C#中只能單繼, 而接口一次可以繼承多個;
  • 接口中只能聲明屬性, 方法, 事件, 索引器, 而抽象類還可以有字段, 靜態(tài)成員和常量, 具體方法, 構(gòu)造函數(shù), 析構(gòu)函數(shù);
  • 接口中所有成員都是公開的(且不允許加訪問修飾符), 抽象類不一定;
  • 二.泛型

    我們在編寫程序時,經(jīng)常遇到兩個模塊的功能非常相似(例如排序),只是一個是處理int數(shù)據(jù),另一個是處string數(shù)據(jù),或者其他自定義的數(shù)據(jù)類型,雖然代碼幾乎一樣,然還是得寫好遍;

    這時你可能會想到用object 來解決這個問題。但是他是有缺陷的:

  • 會出現(xiàn)裝箱、折箱操作,這將在托管堆上分配和回收大量的變量,若數(shù)據(jù)量大,則性能損失非常嚴(yán)重;
  • 在處理引用類型時,雖然沒有裝箱和折箱操作,但將用到數(shù)據(jù)類型的強制轉(zhuǎn)換操作,增加處理器的負(fù)擔(dān);
  • 2.1 泛型方法

    不過好在C#提供了泛型功能, 它能夠?qū)㈩愋妥鳛閰?shù)來傳遞, 即在創(chuàng)建類型時用一個特定的符號如 " T" 作為一個占位符, 代替實際的類型, 等待在實例化時用一個實際的類型來代替.

    在方法名后面加<T>, T 是類型占位符; 這個是你自己定義的, 也可以是U,E等, 但一般都是大寫字母.

    2.1.1 泛型方法的定義:

    1> 參數(shù)類型不確定, 返回值確定;
    public void ShowT<T>(T t){ 代碼段; }2> 參數(shù)類型確定, 返回值類型不確定;
    public T ShowT<T>(string name){ 代碼段; }

    使用情景: Unity 游戲開發(fā)中通過名字從資源文件夾中獲取對象(比如模型);

    3> 參數(shù)類型和返回值類型都不確定;
    public T ShowT<T>(T t){ 代碼段; }// 栗子: 將參數(shù)的值打印出來

    2.1.2 泛型的優(yōu)點:

  • 使用泛型類型可以最大限度地重用代碼、保護類型的安全以及提高性能。
  • 降低了強制轉(zhuǎn)換或裝箱操作的成本或風(fēng)險。
  • 可以對泛型類進行約束以訪問特定數(shù)據(jù)類型的方法。
  • 2.1.3 注意事項:

  • 泛型成員因類型不確定(可能是類、結(jié)構(gòu)體、字符、枚舉……),所以不能使用算術(shù)運算符、比較運算符等進行運算!
  • 可以使用賦值運算符。
  • 2.2 泛型類型參數(shù)

    在泛型類型或方法定義中,類型參數(shù)是客戶端在實例化泛型類型的變量時指定的特定類型的占位符, 可以將多個類型進行泛化。

    例如:

    public

    說明:

  • 多個類型參數(shù)在<>中用逗號隔開;
  • 類型參數(shù)可以是編譯器識別的任何類型;
  • 類型參數(shù)的名字不能重復(fù);
  • 泛型類中的泛型方法后面不能跟<類型占位符>
  • 2.3 泛型類型參數(shù)的約束

    定義泛型類或泛型方法時, 可以對泛型類型進行約束限制客戶端的傳值. 如果客戶端代碼嘗試使用某個約束不允許的類型來實例化類或方法, 則會產(chǎn)生編譯錯誤. 這些限制成為約束.

  • struct 代表只能傳遞值類型數(shù)據(jù);
  • class 代表只能傳遞引用類型;
  • where T : 接口名 表示只能傳遞實現(xiàn)該接口的類型;
  • where T : 類名 表示只能傳遞實現(xiàn)該類的類型
  • where T:new() 表示T 類型必須要有一個無參數(shù)的構(gòu)造方法 , 當(dāng)多個限定一起使用時, new() 必須放在最后;
  • 2.3 泛型類

    泛型類封裝不特定數(shù)據(jù)類型的操作. 通常, 創(chuàng)建泛型類是從現(xiàn)有具體類開始, 然后每次逐個將類型更改為類型參數(shù).

    練習(xí)1: 將任意類型的數(shù)組拼接成字符串

    // 定義一個泛化方法

    練習(xí)2 : 將任意類型的數(shù)組進行冒泡排序(考慮 對類和結(jié)構(gòu)體排序)

    // 定義一個Person類, 繼承 IComparable接口是因為類本身是不能進行比較的, 但是繼承該接口就可以重寫接口中的CompareTo方法;自己定義比較運算

    同理 結(jié)構(gòu)體類型和類非常類似

    // 定義 Student 結(jié)構(gòu)體繼承IComparable 接口

    泛型的冒泡排序:

    // 這里注意 泛型類型的參數(shù)是不能進行運算符的運算的, 要通過CompareTo方法來實現(xiàn), 所以就要規(guī)定一下T要遵循IComparable接口

    =======================================================

    思維導(dǎo)圖:

    總結(jié)

    以上是生活随笔為你收集整理的C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记11--接口/泛型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲天堂激情 | 亚洲第一天堂久久 | 日批网站在线观看 | 秘密基地免费观看完整版中文 | 中文日本在线 | 豆花在线视频 | 91天堂视频 | 国产精品国产三级国产 | 亚洲激情社区 | 不卡一区二区在线观看 | 精品韩国一区二区三区 | 日本三级日本三级日本三级极 | 强开乳罩摸双乳吃奶羞羞www | 一区二区三区视频在线观看 | 欧美成人激情视频 | 欧美美女性生活视频 | 精品人妻一区二区三区蜜桃视频 | 福利视频在线 | 亚洲自拍第二页 | 国内精品91| 台湾佬中文在线 | 夫妻性生活自拍 | 黄色一级片黄色一级片 | a免费看| 日韩一区在线播放 | 在线观看 中文字幕 | 免费国产精品视频 | 免费一区二区视频 | 一区二区小说 | 97精品国产露脸对白 | 国产激情小视频 | 欧美日韩亚洲国产另类 | 三上悠亚人妻中文字幕在线 | 国产精品一级片 | 91国自产精品中文字幕亚洲 | 中文字幕资源站 | 激情婷婷小说 | 9999re| 香蕉爱爱视频 | 色婷婷在线播放 | 欧美第四页 | 自拍偷拍色图 | 亚洲午夜福利在线观看 | 亚洲欧洲无码一区二区三区 | 日本一区二区三区四区视频 | 日韩精品久久久久久久 | 日韩欧美专区 | 黄色福利在线观看 | 亚洲第一免费播放区 | 国产黄大片在线观看画质优化 | 性高潮免费视频 | av网页在线| 国产人妖一区二区 | 男人午夜网站 | 无码人妻丰满熟妇区毛片18 | 日本无遮挡边做边爱边摸 | 精品一区二区三区国产 | 97爱爱视频 | 久久视频一区二区 | 天天色小说 | 日韩欧美视频网站 | 五月网站 | 在线观看日本 | 中国女人特级毛片 | 久久久午夜精品福利内容 | 日本嫩草影院 | 精品在线免费播放 | 欧美成在线观看 | 成人黄色短视频在线观看 | 天天色综合久久 | 奇米777视频 | 国产亚洲精品久久久 | 欧美日韩亚洲成人 | 日韩av成人网 | www.av网址 | 一区二区免费在线播放 | 高清久久久久久 | 91福利视频免费观看 | 精品中文在线 | 日本国产精品一区 | 精品国产乱码久久久久久郑州公司 | 成人在线国产精品 | 亚洲国产理论 | 日本啊v在线 | 中文字幕第2页 | 毛片无限看 | 欧美一级淫 | 中文字幕av影院 | 琪琪成人 | 国产精品不卡av | 欧美激情亚洲激情 | 一区二区三区在线观看av | 久一视频在线观看 | 亚洲精品福利网站 | 国产91九色 | www.男人天堂.com | 恶虐女帝安卓汉化版最新版本 | 精品国产一级片 | 成人免费午夜视频 |