Java 中的接口有什么作用? - Ivony的回答 - 知乎 https://www.zhihu.com/question/20111251/answer/16585393
這是一個初學者非常常見的問題。
例如我定義了一個接口,但是我在繼承這個接口的類中還要寫接口的實現方法,那我不如直接就在這個類中寫實現方法豈不是更便捷,還省去了定義接口?
接口就是個招牌。
比如說你今年放假出去杭州旅游,玩了一上午,你也有點餓了,突然看到前面有個店子,上面掛着KFC,然后你就知道今天中飯有着落了。
KFC就是接口,我們看到了這個接口,就知道這個店會賣炸雞腿(實現接口)。
那么為神馬我們要去定義一個接口涅,這個店可以直接賣炸雞腿啊(直接寫實現方法),是的,這個店可以直接賣炸雞腿,但沒有掛KFC的招牌,我們就不能直接簡單粗暴的沖進去叫服務員給兩個炸雞腿了。
要么, 我們就要進去問,你這里賣不賣炸雞腿啊,賣不賣漢堡啊,賣不賣聖代啊(這就是反射)。很顯然,這樣一家家的問實在是非常麻煩(反射性能很差)。要么,我們就要記住,中山路108號賣炸雞,黃山路45號賣炸雞(硬編碼),很顯然這樣我們要記住的很多很多東西(代碼量劇增),而且,如果有新的店賣炸雞腿,我們也不可能知道(不利於擴展)。