第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

接口-有什么意義?

接口-有什么意義?

慕俠2389804 2019-10-23 12:51:15
接口的原因確實(shí)使我難以理解。據(jù)我了解,這是針對C#中不存在的不存在的多重繼承的一種解決方法(或者有人告訴我)。我所看到的是,您預(yù)先定義了一些成員和函數(shù),然后必須在類中重新定義它們。從而使接口冗余。只是感覺像語法...好吧,對我來說是垃圾(請不要冒犯。在下面給出的示例中,該示例是在堆棧溢出時(shí)從不同的C#接口線程獲取的,我只是創(chuàng)建一個(gè)稱為Pizza的基類而不是一個(gè)接口。簡單示例(來自不同的堆棧溢出貢獻(xiàn))public interface IPizza{    public void Order();}public class PepperoniPizza : IPizza{    public void Order()    {        //Order Pepperoni pizza    }}public class HawaiiPizza : IPizza{    public void Order()    {        //Order HawaiiPizza    }}
查看完整描述

3 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

關(guān)鍵是接口代表合同。任何實(shí)現(xiàn)類都必須具有的一組公共方法。從技術(shù)上講,該接口僅控制語法,即,那里有什么方法,它們得到什么參數(shù)以及它們返回什么。通常,它們也封裝語義,盡管只能通過文檔進(jìn)行封裝。

然后,您可以使用接口的不同實(shí)現(xiàn),并隨意替換它們。在您的示例中,由于每個(gè)披薩實(shí)例都是一個(gè),因此IPizza您可以IPizza在處理未知披薩類型的實(shí)例的任何地方使用。類型繼承自的任何實(shí)例IPizza都可以保證可排序,因?yàn)樗哂?code>Order()方法。

Python不是靜態(tài)類型的,因此類型會在運(yùn)行時(shí)保留并查找。因此,您可以嘗試Order()在任何對象上調(diào)用方法。只要對象具有這樣的方法,運(yùn)行時(shí)就很高興,并且可能只是聳聳肩說“ Meh?!保ㄈ绻麤]有)。在C#中不是這樣。編譯器負(fù)責(zé)進(jìn)行正確的調(diào)用,如果只是隨機(jī)的,object則編譯器尚不知道運(yùn)行時(shí)實(shí)例是否具有該方法。從編譯器的角度來看,它是無效的,因?yàn)樗鼰o法驗(yàn)證它。(您可以使用反射或dynamic關(guān)鍵字來執(zhí)行此類操作,但是我猜這有點(diǎn)遠(yuǎn)了。)

還要注意,通常意義上的接口不一定必須是C#interface,它也可以是抽象類甚至是普通類(如果所有子類都需要共享一些通用代碼,則可以派上用場)但是interface就足夠了)。


查看完整回答
反對 回復(fù) 2019-10-23
  • 3 回答
  • 0 關(guān)注
  • 512 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號