聊一聊C#接口問(wèn)題 新手速來(lái)圍觀
這段時(shí)間的項(xiàng)目有用到接口,開(kāi)始不是特別理解接口,只是單單知道接口定義非常簡(jiǎn)單,甚至覺(jué)得這個(gè)接口只是多此一舉(個(gè)人開(kāi)發(fā)的時(shí)候)。現(xiàn)在開(kāi)始團(tuán)隊(duì)開(kāi)發(fā),才發(fā)現(xiàn)接口原來(lái)是這么的重要和便捷!
接下來(lái)就來(lái)談?wù)勎疫@段時(shí)間對(duì)接口使用的粗淺見(jiàn)解,說(shuō)的對(duì)希望大家贊,說(shuō)的有誤的地方希望大家多多包涵建議!
READY GO!
接口的定義就不多說(shuō)了,它有一個(gè)很重要的知識(shí)點(diǎn),就是所有繼承這個(gè)接口類的都必須實(shí)現(xiàn)接口中的定義,說(shuō)到這個(gè)必須,在團(tuán)隊(duì)開(kāi)發(fā)中,只要我們商定好了接口,那我們的代碼是不是就統(tǒng)一了?。?!
這是我覺(jué)得接口重要的第一點(diǎn):它便于我們統(tǒng)一項(xiàng)目的規(guī)定,便于團(tuán)隊(duì)代碼的管理!
再來(lái)用一個(gè)例子說(shuō)明:
A公司決定開(kāi)發(fā)一套動(dòng)物系統(tǒng),其中包含很多的動(dòng)物,公司決定要實(shí)現(xiàn)每個(gè)動(dòng)物的喊叫行為……
說(shuō)到這里,我們一般就是各個(gè)程序員拿到自己要實(shí)現(xiàn)的動(dòng)物類之后就開(kāi)始大刀闊斧的開(kāi)干了?。?!
X程序員實(shí)現(xiàn)狗這個(gè)類,他寫一個(gè)叫喊方法void Han(){……}
Y程序員實(shí)現(xiàn)貓這個(gè)類,他寫一個(gè)叫喊方法void Shout(){……}
M程序員實(shí)現(xiàn)豬這個(gè)類,他寫一個(gè)叫喊方法 void Shout(string content){……}
………………
好了,現(xiàn)在都完成了各自需要完成的動(dòng)物,隔壁老王開(kāi)始來(lái)實(shí)現(xiàn)百獸齊鳴?。。。?amp;¥%¥*%¥¥%¥一頓粗口爆出!這要怎么寫?一個(gè)個(gè)去調(diào)用???
來(lái)看看,X程序員英語(yǔ)不太好,也沒(méi)有過(guò)多的去管,只是寫出動(dòng)物叫喊的方法,Y程序員和M程序員寫的叫喊方法名稱是一樣,但M程序員中還要傳遞動(dòng)物叫喊的內(nèi)容?。。。?!
隔壁老王現(xiàn)在要讓所有動(dòng)物都叫一遍就得一個(gè)動(dòng)物一個(gè)動(dòng)物的去調(diào)用方法……
OK,接下來(lái)開(kāi)會(huì)商量,隔壁老王定義一個(gè)動(dòng)物接口,所有的動(dòng)物類都得繼承這個(gè)接口,這個(gè)接口只定義一個(gè)void Shout(); (就不過(guò)多的寫東西啦,偷偷懶)
X,Y,M程序員繼承后,X,M立馬就發(fā)現(xiàn)有問(wèn)題,然后開(kāi)始改了自己手中的類
這時(shí)老王就開(kāi)始來(lái)百獸齊鳴啦!哈哈哈哈哈
接下來(lái)貼出代碼大家看
接口
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 動(dòng)物接口 /// </summary> interface IAnimal { /// <summary> /// 動(dòng)物叫喊 /// </summary> void Shout(); } }
狗
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 狗 /// </summary> public class Dog:IAnimal { public void Shout() { Console.WriteLine("汪汪汪"); } } }
貓
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 貓 /// </summary> public class Cat:IAnimal { public void Shout() { Console.WriteLine("喵喵喵"); } } }
豬
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 豬 /// </summary> public class Pig:IAnimal { public void Shout() { Console.WriteLine("豬怎么叫來(lái)著??豬叫"); } } }
隔壁老王來(lái)實(shí)現(xiàn)百獸齊鳴(打倒老王這種人物的存在)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { class Program { static void Main(string[] args) { //百獸齊鳴(這里可以使用反射來(lái)初始化所有繼承IAnimal的所有動(dòng)物,我就不寫這個(gè)了,主要看接口) List<IAnimal> animals = new List<IAnimal>(); IAnimal dog = new Dog(); animals.Add(dog); IAnimal cat = new Cat(); animals.Add(cat); IAnimal pig = new Pig(); animals.Add(pig); //所有動(dòng)物都叫一遍 for (int i = 0; i < animals.Count; i++) { animals[i].Shout(); } } } }
我對(duì)這個(gè)接口的粗略見(jiàn)解就說(shuō)完啦!接口這個(gè)東西雖然用起來(lái)很簡(jiǎn)單,但我們還是要理解這個(gè)接口的作用,希望我的這篇文章能夠讓更多像我一樣的新手向接口這個(gè)東西邁出第一步。
相關(guān)文章
Unity實(shí)現(xiàn)倒計(jì)時(shí)組件
這篇文章主要介紹了Unity實(shí)現(xiàn)倒計(jì)時(shí)組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05同時(shí)兼容JS和C#的RSA加密解密算法詳解(對(duì)web提交的數(shù)據(jù)加密傳輸)
這篇文章主要給大家介紹了關(guān)于同時(shí)兼容JS和C#的RSA加密解密算法,通過(guò)該算法可以對(duì)web提交的數(shù)據(jù)進(jìn)行加密傳輸,文中通過(guò)圖文及示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2017-07-07Unity Shader相交算法實(shí)現(xiàn)簡(jiǎn)易防能量盾
這篇文章主要為大家詳細(xì)介紹了Unity Shader相交算法實(shí)現(xiàn)簡(jiǎn)易防能量盾,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04C# Winform 分頁(yè)功能的實(shí)現(xiàn)
本文主要介紹了C# Winform 分頁(yè)功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06C#中FormsAuthentication用法實(shí)例
這篇文章主要介紹了C#中FormsAuthentication用法實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-02-02c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例
這篇文章主要介紹了c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01