C#其他知識點

接口類---interface

什么是接口? 在接口當中一般我們認為接口中的成員都是抽象的。

接口一般認為是功能的集合。在接口類當中定義的方法都是抽象象方法。(沒有方法體)

接口一般我們認為它是一種標準,一種規范,一種約定。

給子類或者是派生類制定規范,規定,標準。

當子類繼承了該接口類,那么就需要重寫該接口類中定義的所有的抽象方法,(需要在子類中添加方法的具體實現)

接口的出現,是為了給子類提供一種能力,實現多態。

//定義一個接口代表的是一種能力
public interface IFLyAble
{
void Fly();
}
//定義一個class類Bird
public class Bird : IFlyAble
public void Fly()
{}
Console.WriteLine("鳥會飛");
3
public class Program
public static void Main(string[] args)
IFlyAble flyAble = new Bird();
flyAble.Fly();

接口類沒有構造方法,也不能進行重載,所以接口不能實例化

接口類中的成員,不能添加任何修飾符,默認修飾符就是publicabstract

接口中的成員不能有任何的實現,屬性不能有初始值,方法不不能有方法體都是以分號做結尾

在接口類中不能定義字段,一般定義屬性(get和set)和方法。

接口類與接口類之間可以繼承,并且可以實現多繼承。單繼承說的是由class定義的類,而由interface定義的類是可以多繼承的。

//定義接口
public interface MyInterface01 { }
public interface MyInterface02: MyInterface01 { }
public interface MyInterface03: MyInterface01,MyInterface02{}
public interface MyInterface04:MyInterface01,MyInterface02,MyInterface03{}
public interface MyInterface05:MyInterface01,MyInterface02,MyInterface03,MyInterface04 {}

接口類不能繼承class聲明的類,但是class聲明的類可以繼承接口類,并且還可以繼承多個接口類。

// 定義接口
public interface MyInterface01 /*: MyCLass*/ { }3
public interface MyInterface02: MyInterface01 { }
public interface Myinterface03: MyInterface01,MyInteerface02{}
public interface MyInterface04:MyInterface01,My1Interface02,MyInterface03 { }
public interface MyInterface05:MyInterface01,MyInterface02,MyInterface03,MyInter face04 {}
//定義一個c1ass聲明的類
public class MyClass : MyInterface01,MyInterface202,MyInterface03,MyInterface04{}

一個class類在繼承class類的時候同時還可以繼承接口類,前提條件就是class類必須放在interface聲明的接口類的前面

// 定義接口
public interface MyInterface01 /*: MyCLass*/ { }3
public interface MyInterface02: MyInterface01 { }
public interface Myinterface03: MyInterface01,MyInteerface02{}
public interface MyInterface04:MyInterface01,My1Interface02,MyInterface03 { }
public interface MyInterface05:MyInterface01,MyInterface02,MyInterface03,MyInter face04 {}
//定義一個c1ass聲明的類
public class MyClass : MyInterface01,MyInterface202,MyInterface03,MyInterface04{}
//定義一個c1ass聲明的類
public class Myclass2:MyClass, Myinterface01, Myinterface02, Myinteerface03, Myinterface04{}

接口只能繼承接口,但是類可以繼承接口也可以繼承class類

如果一個抽象類繼承了一個接口,那么該接口中的成員在抽象類中中也是必須實現的,需要進行方法重寫。

當在程序當中定義了一個接口類,一般情況下我們會把接口的類名以"I"字母開頭進行命名。

當一個類繼承了多個接口,這多個接口當中有重名的方法,對于繼承的子類來說,只需要在子類中重寫一次即可。(如果重名的方法形參列

表不同,那么接口中定義了幾個方法,子類就需要重寫幾個方法)

支持接口的顯示實現

定義接口
public interface MyInterface01 /*: MyCLass*/
{}
void Study();
public interface MyInterface02 : MyInterface01
{
new void Study();
{}
//定義一個子類MyC1ass3
public class Myclass3 : MyInterface01, MyInterface02
//支持接口的顯示實現
void MyInterface01. Study()
{}
void MyInterface02.Study() { }
//public void Study(int x) { }
}

接口的顯示實現是為了解決子類中和接口中定義的重名方法 語法格式: 返回值類型接口名.方法名稱(形參列表){方法體內容....}

public interface 接口名稱
{
抽象方法...
}

其他知識點

SortedList集合

SortedList它是一個雙列(鍵值對)排序集合,其中的鍵自動按照順序進行排序。

該集合既可以使用帶有泛型的特征,也可以不使用帶有泛型的特證。

SortedList它是Hashtable和Array的結合體。

當使用Key來訪問集合當中的元素時,其行為類似于Hashtable,當使用下標索引GetBylndex()和SetByIndex()來訪問集合當中的元素時,其行為類似于Array數組。

//創建SortedList集合對象
SortedList sortedList = new SortedList();//無序添加輸出是帶有排序
//添加一些元素
sortedList.Add(3,"張三");
sortedList.Add(5,"王五");
sortedList.Add(7, "田七");
sortedList.Add(4,"李四");
sortedList.Add(6,"趙六");
sortedList.Add(8,"周八")
sortedList.Add(1,"天一")
// 遍歷查看
ICollection keys = sortedList.Keys;
foreach(var key in keys)//var它是一個可變類型
{
object value = sortedList[key];//通過key獲取value
Console.WriteLine(key +"---->" + value);
}

常用方法

高級方法

排序特征

如果我們想要實現自定義排序,需要讓SortedList中的Key實現一個ICompare<T>接口

例子:

img

比較規則

只要是比較:規則如下:=0,位置相同不改變0---->x在y前 <0--->x在y后

設計模式

23種設計模式:對象創建型 結構型 行為型

依據面向對象編程六大設計原則:單一原則,接口隔離原則,依賴倒置原則,迪米特原則等等

單例模式

屬于對象創建型中的其中一種

該模式的目的就是確保在程序運行過程中某一個類有且僅有一個實例。并且需要提供一個全局訪問點來訪問這個類的唯一實例。

有兩種實現方式:懶漢式(延時獲取)、餓漢式(及時獲取)

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916335.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Maven 環境配置全攻略:從入門到實戰

一、Maven 簡介 Maven 是一個基于項目對象模型 (POM) 的項目管理工具&#xff0c;它可以通過一小段描述信息來管理項目的構建、報告和文檔。 除了強大的程序構建能力外&#xff0c;Maven 還提供了高級項目管理功能。其默認構建規則具有很高的可重用性&#xff0c;通常只需兩三…

現代 C++ 開發工作流(VSCode / Cursor)

? 推薦的現代 C 開發工作流&#xff08;含 VSCode / Cursor 插件配置&#xff09;&#x1f9f0; 一、環境要求 C 編譯器&#xff08;如 g 或 clang&#xff09;CMake&#xff08;建議 ≥ 3.16&#xff09;clangd&#xff08;建議 ≥ 14&#xff0c;最好用系統包管理器安裝&…

[SAP ABAP] ALV報表練習4

SO銷售訂單明細報表業務目的&#xff1a;根據選擇屏幕的篩選條件&#xff0c;使用ALV報表顯示銷售訂單詳情(Sales Order、Material、現有Qty、已開立數量以及剩余數量等)信息效果展示我們在銷售訂單欄位輸入需要查詢的SO單號&#xff0c;這里我們以SO單號0000000221為例&#x…

《設計模式之禪》筆記摘錄 - 10.裝飾模式

裝飾模式的定義裝飾模式(Decorator Pattern)是一種比較常見的模式&#xff0c;其定義如下&#xff1a;Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending fu…

[AI8051U入門第十步]W5500-客戶端

學習目標: 1、認識W5500模塊 2、驅動W5500靜態獲取ip 3、獲取全球唯一碼作為mac地址 4、拔出網線重插網線自動獲取IP 5、編寫W5500作為客戶端進行TCP/IP代碼一、W5500介紹 W5500 是一款由韓國 WIZnet 公司推出的高性能 硬件 TCP/IP 嵌入式以太網控制器,專為嵌入式系統設計,…

UNETR++: Delving Into Efficient and Accurate 3D Medical Image Segmentation

摘要得益于Transformer模型的成功&#xff0c;近期研究開始探索其在3D醫學分割任務中的適用性。在Transformer模型中&#xff0c;自注意力機制是核心構建模塊之一&#xff0c;與基于局部卷積的設計相比&#xff0c;它致力于捕捉長距離依賴關系。然而&#xff0c;自注意力操作存…

Kotlin Flow 在 Jetpack Compose 中的正確打開方式:SharedFlow vs StateFlow 與 LaunchedEffect

在 Jetpack Compose 中&#xff0c;Kotlin Flow 是處理異步數據流的核心工具&#xff0c;而 SharedFlow 和 StateFlow 是最常用的兩種 Flow 類型。但很多開發者對它們的適用場景、如何與 LaunchedEffect 配合使用存在困惑。本文將深入探討它們的區別&#xff0c;并給出最佳實踐…

嵌入式——C語言:指針①

一、指針特點1.讓代碼更加簡潔高效2.提供直接訪問內存的操作3.利用指針可以直接操作硬件二、指針概念&#xff08;一&#xff09;地址&#xff1a;為了區分內存中不同字節的編號&#xff08;0到2^16-1&#xff09;&#xff08;二&#xff09;指針&#xff1a;指針就是地址&…

RabbitMQ—HAProxy負載均衡

上篇文章&#xff1a; RabbitMQ—仲裁隊列https://blog.csdn.net/sniper_fandc/article/details/149312579?fromshareblogdetail&sharetypeblogdetail&sharerId149312579&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 HAProxy安裝…

QT中啟用VIM后粘貼復制快捷鍵失效

當在QT中啟用FakeVim之后&#xff0c;Ctrl C 和 Ctrl V 快捷鍵就變成 Vim 的快捷鍵了&#xff0c;我希望它還是原來的復制粘貼功能&#xff0c;打開&#xff1a;編輯 > Preferences…&#xff0c;然后勾選 “Pass control keys”即可&#xff0c;如下&#xff1a;

TCP三次握手與四次揮手全解析

&#x1f30a; TCP三次握手與四次揮手全解析&#xff08;含序列號動態追蹤&#xff09;&#x1f511; TCP 協議核心機制 序列號 (seq)&#xff1a;數據字節流的唯一標識&#xff08;32位循環計數器&#xff09;確認號 (ack)&#xff1a;期望接收的下一個序列號&#xff08;ack …

7月26號打卡

作業&#xff1a;題目1&#xff1a;計算圓的面積 任務&#xff1a; 編寫一個名為 calculate_circle_area 的函數&#xff0c;該函數接收圓的半徑 radius 作為參數&#xff0c;并返回圓的面積。圓的面積 π * radius (可以使用 math.pi 作為 π 的值)要求&#xff1a;函數接收一…

C++/CLI與標準C++的語法差異(一)

&#x1f30c; C/CLI與標準C的語法差異&#xff08;一&#xff09;&#x1f52c; 第一章&#xff1a;類型系統革命 - 徹底解構三語言范式 &#x1f9ea; 1.1 類型聲明語義差異矩陣 #mermaid-svg-L5kQ3iy05pKo4vIj {font-family:"trebuchet ms",verdana,arial,sans-se…

輸電線路微氣象在線監測裝置:保障電網安全的科技屏障

在電力傳輸網絡中&#xff0c;輸電線路微氣象在線監測裝置通過集成專業傳感器與智能分析技術&#xff0c;實現對線路周邊環境參數的實時采集與動態分析&#xff0c;為電網運行安全提供數據支撐。該設備針對輸電線路特殊工況設計&#xff0c;具備高適應性、高可靠性特點。工作原…

基于springboot的圖書借閱系統

用戶&#xff1a;借閱信息管理&#xff0c;續借信息管理&#xff0c;還書信息管理&#xff0c;圖書信息&#xff0c;系統公告&#xff0c;留言板&#xff0c;我的中心管理員&#xff1a;圖書信息管理&#xff0c;圖書類型管理&#xff0c;借閱信息管理&#xff0c;續借信息管理…

Xinference vs SGLang:詳細對比分析

概述對比特性XinferenceSGLang定位通用AI模型推理平臺高性能LLM服務框架專注領域多模態模型統一接口LLM推理性能優化設計理念易用性和兼容性性能和效率核心架構對比 Xinference 架構特點 Xinference 架構&#xff1a; ├── API層&#xff08;REST/CLI/Python&#xff09; ├─…

雙非上岸985!專業課140分經驗!信號與系統考研專業課140+上岸中南大學,通信考研小馬哥

一&#xff0e;經驗分享個人情況&#xff1a;初試總分377&#xff0c;政治59&#xff0c;英語二75、數學二103、專業課140。本科為湖南一所雙非一本&#xff0c;專業是電子信息工程&#xff0c;本科成績一般&#xff0c;無獎學金無評優無科研競賽&#xff0c;屬于三無人員&…

配置DNS正反向解析

服務端master配置:yum install bind -y配置靜態ip&#xff1a;修改配置文件&#xff1a;主&#xff1a;區域&#xff1a;正向解析&#xff1a;反向解析&#xff1a;開啟服務&#xff1a;客戶端node1配置&#xff1a;yum install nginx -y配置靜態ip&#xff1a;使用xftp將文…

MyBatis-Plus 通用 Service

引言 在開發 Java Web 應用程序時&#xff0c;我們經常需要進行大量的數據庫操作&#xff0c;如創建、讀取、更新和刪除&#xff08;CRUD&#xff09;。MyBatis-Plus 作為一個強大的 MyBatis 增強工具&#xff0c;為我們提供了通用 Service 接口&#xff0c;極大地簡化了這些操…

聚類-一種無監督分類算法

目錄 1、聚類任務 2、性能度量 &#xff08;1&#xff09;外部指標 &#xff08;2&#xff09;內部指標 3、具體聚類方法 &#xff08;1&#xff09;原型聚類 &#xff08;2&#xff09;密度聚類 &#xff08;3&#xff09;層次聚類 “無監督學習”(unsupervised learnin…