-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專(zhuān)題列表 > 正文
為什么要寫(xiě)接口(為什么要寫(xiě)接口再用類(lèi)實(shí)現(xiàn))
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于為什么要寫(xiě)接口的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
ChatGPT國(guó)內(nèi)免費(fèi)在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶(hù)端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、java項(xiàng)目中為什么要實(shí)現(xiàn)dao接口和service接口?
最主要是為了分層開(kāi)發(fā),代碼解耦。使用接口,可以方便修改和維護(hù)。至于Dao和Service層,這是三層架構(gòu)里的,為了把數(shù)據(jù)庫(kù)DB的操作和業(yè)務(wù)操作分離開(kāi)來(lái),就是解耦,可以給前期開(kāi)發(fā)和后期維護(hù)帶來(lái)便利,實(shí)現(xiàn)多人快速開(kāi)發(fā)。
二、c#中為什么要用接口
你要把接口也理解成一種類(lèi),比如有個(gè)基類(lèi)叫baseClass,一個(gè)繼承他的類(lèi)叫subClass,那么subClass也算是baseClass類(lèi)型的,可以有這樣的寫(xiě)法baseClass bc=new subClass()
接口也是一樣,如果一個(gè)類(lèi)MyClass實(shí)現(xiàn)了借口一個(gè)接口interfaceClass,你事實(shí)上可以把MyClass叫做interfaceClass的子類(lèi),可以有這樣的寫(xiě)法interfaceClass ic=new MyClass()
這就是所說(shuō)的多態(tài)的一部分基礎(chǔ)??梢耘e個(gè)實(shí)在點(diǎn)的例子,比如你想寫(xiě)一個(gè)方法叫EnumAll,參數(shù)是一個(gè)類(lèi)的實(shí)例,作用是例舉出該實(shí)例中的每個(gè)子元素并打印出元素的ToString(如窗體的子元素是窗體中的控件,數(shù)組的子元素就不用說(shuō)了吧),你就遇到兩個(gè)問(wèn)題
首先EnumAll參數(shù)的類(lèi)型是什么。參數(shù)應(yīng)該可以是一個(gè)Form類(lèi)型,因?yàn)榇翱谥杏泻芏嗫丶?,使用EnumAll和一個(gè)Form的實(shí)例做參數(shù)可以打印出包含在該參數(shù)窗體中的每個(gè)控件的名字;但是一個(gè)數(shù)組Object[]類(lèi)型應(yīng)該也可以使用EnumAll方法,EnumAll可以列舉Object[]中的每個(gè)元素并打印。你是要把方法寫(xiě)成void EnumAll(Form e)還是寫(xiě)成void EnumAll(Object[] e)?
然后就是EnumAll怎樣實(shí)現(xiàn)才能得到不同類(lèi)型的實(shí)例的子元素?如果是void EnumAll(Form e)的形式,要想得到子元素要用
foreach(Control c in e.Controls)
{
Console.WriteLine(c.ToString());
}
的寫(xiě)法,如果數(shù)組要用
for(int i=0;i<e.length;++i)
{
Console.WriteLine(e[i].ToString());
}
的實(shí)現(xiàn)方法。
Form和Object[]是兩種完全不沾邊的類(lèi)型,那么EnumAll到底該怎么寫(xiě)?
這時(shí)就可以使用接口,可以定義一個(gè)接口
interface IEnumable
{
Object next();//返回下一個(gè)子元素的方法
}
然后使Form和Object[]類(lèi)型都實(shí)現(xiàn)IEnumable接口(實(shí)現(xiàn)方法是不同的,如前面所說(shuō)),然后這樣寫(xiě)EnumAll方法:
void EnumAll(IEnumable e)//一開(kāi)始就說(shuō)了,實(shí)現(xiàn)接口的類(lèi)都可以算是接口的子類(lèi)
{Object o;
while((o=e.next)!=null)
{
Console.WriteLine(o.ToString());
}
}
于是解決了上面的問(wèn)題。
不知道有沒(méi)有說(shuō)清楚,如果理解了上面舉的例子算是初步了解接口了,接口的多繼承和多態(tài)性還有很多內(nèi)容。
另外,上面的東西只是舉例子,雖然C#中確實(shí)有IEnumable接口,但其定義要復(fù)雜的多,我只是舉個(gè)簡(jiǎn)化的自己編的例子^_^。C#的(應(yīng)該說(shuō)是FCL吧)很多類(lèi)都實(shí)現(xiàn)了IEnumalbe接口,像集合類(lèi)和數(shù)組等。
FCL是.NET框架類(lèi)庫(kù),F(xiàn)ramework Class Library,不論在C#,J#,VB.NET或其他.NET開(kāi)發(fā)語(yǔ)言中使用的.NET提供的類(lèi)都是FCL中的類(lèi),就是說(shuō),.NET的開(kāi)發(fā)其實(shí)是和語(yǔ)言無(wú)關(guān)的。不同語(yǔ)言編寫(xiě)的程序由于使用同一類(lèi)庫(kù)(其實(shí)等于被翻譯成了同一種中間語(yǔ)言,Common Intermediate Language, CIL),使得各種不同語(yǔ)言寫(xiě)的程序集可以通用。
三、現(xiàn)在做一個(gè)web項(xiàng)目,為什么biz層和dao層都先要寫(xiě)成接口啊
這個(gè)不是一定的,只是在學(xué)習(xí)的時(shí)候通過(guò)這樣的三層協(xié)議進(jìn)行程序開(kāi)發(fā),掌握了這種開(kāi)發(fā)手段后,有利于大項(xiàng)目整合、團(tuán)隊(duì)合作,每一層之間盡量通過(guò)接口進(jìn)行訪問(wèn),這樣各層之間只要接口參數(shù)沒(méi)有進(jìn)行修改,就不需要通知其它層,減少了程序維護(hù)的成本。所以如果你一個(gè)人開(kāi)發(fā)項(xiàng)目,完全沒(méi)有必要寫(xiě)成接口,通過(guò)模塊劃分,通過(guò)類(lèi)進(jìn)行訪問(wèn)就行了。
四、java中什么是接口?接口的作用是什么?
java接口:
1、Java語(yǔ)言中存在的結(jié)構(gòu),有特定的語(yǔ)法和結(jié)構(gòu)。
2、Java語(yǔ)言中一個(gè)類(lèi)所具有的方法的特征集合,是一種邏輯上的抽象。
java接口作用:
1、利于代碼的規(guī)范
這樣做的目的一方面是為了給開(kāi)發(fā)人員一個(gè)清晰的指示,告訴他們哪些業(yè)務(wù)需要實(shí)現(xiàn);同時(shí)也能防止由于開(kāi)發(fā)人員隨意命名而導(dǎo)致的命名不清晰和代碼混亂,影響開(kāi)發(fā)效率。
2、有利于對(duì)代碼進(jìn)行維護(hù)
可以一開(kāi)始定義一個(gè)接口,把功能菜單放在接口里,然后定義類(lèi)時(shí)實(shí)現(xiàn)這個(gè)接口,以后要換的話只不過(guò)是引用另一個(gè)類(lèi)而已,這樣就達(dá)到維護(hù)、拓展的方便性。
3、保證代碼的安全和嚴(yán)密
一個(gè)好的程序一定符合高內(nèi)聚低耦合的特征,能夠讓系統(tǒng)的功能較好地實(shí)現(xiàn),而不涉及任何具體的實(shí)現(xiàn)細(xì)節(jié)。這樣就比較安全、嚴(yán)密一些,這一思想一般在軟件開(kāi)發(fā)中較為常見(jiàn)。
擴(kuò)展資料:
關(guān)于java接口的使用規(guī)范:
1、接口中可以定義常量,不能定義變量,接口中的屬性都是全局靜態(tài)常量,接口中的常量必須在定義時(shí)指定初始值。
2、 接口中所有的方法都是抽象方法,接口中方法都會(huì)自動(dòng)用public abstract 修飾,即接口中只有全局抽象方法。
3、 接口不能實(shí)例化,接口中不能有構(gòu)造。
4、 接口之間可以通過(guò)extends實(shí)現(xiàn)繼承關(guān)系,一個(gè)接口可以繼承多個(gè)接口,但接口不能繼承類(lèi)。
5、 接口的實(shí)現(xiàn)類(lèi)必須實(shí)現(xiàn)接口的全部方法,否則必須定義為抽象類(lèi)。
參考資料來(lái)源:百度百科:java接口
以上就是關(guān)于為什么要寫(xiě)接口相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢(xún),客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
淘寶為什么自動(dòng)生成昵稱(chēng)(淘寶為什么自動(dòng)設(shè)置了昵稱(chēng))
東北人為什么懷念滿(mǎn)洲國(guó)(東北人為什么懷念滿(mǎn)洲國(guó)的歷史)
猜你喜歡
ebpay錢(qián)包官網(wǎng)(EBpay錢(qián)包官網(wǎng))
u盤(pán)出現(xiàn)格式化磁盤(pán)怎么辦(u盤(pán)出現(xiàn)格式化磁盤(pán)怎么辦恢復(fù))
車(chē)機(jī)cam是什么意思(車(chē)載cam)
chatrandom隨機(jī)匹配聊天網(wǎng)頁(yè)版(隨機(jī)匹配在線聊天)
內(nèi)網(wǎng)需要nginx(內(nèi)網(wǎng)需要防火墻嗎)
un哪個(gè)國(guó)家的縮寫(xiě)(un是哪個(gè)國(guó)家)
真實(shí)日本鬼子進(jìn)村(真實(shí)日本鬼子進(jìn)村圖)