如果只是單個(gè)的類(lèi)繼承單個(gè)的接口的話(huà) 那肯定沒(méi)啥意義
但是多個(gè)類(lèi)同時(shí)繼承一個(gè)接口的話(huà)那就不一樣了
這也是"接口"這個(gè)為什么叫名字的原因
本來(lái)不相關(guān)的兩個(gè)類(lèi)繼承了同一接口的話(huà) 這兩個(gè)類(lèi)就能產(chǎn)生關(guān)聯(lián).通過(guò)這個(gè)關(guān)聯(lián)你能實(shí)現好多特別的效果 建議你去看看設計模式 里邊有好多模式都是根據這條設計的
接口還有一個(gè)好處是: Java語(yǔ)言不支持一個(gè)類(lèi)有多個(gè)直接的父類(lèi)(多繼承),但可以實(shí)現(implements)多個(gè)接口,間接的實(shí)現了多繼承.
接口也可以實(shí)現封裝,調用者只要調用接口,而無(wú)需關(guān)注它怎么實(shí)現等問(wèn)題
重寫(xiě)一般用于繼承體現多態(tài)應為我們經(jīng)常會(huì )設計一個(gè)抽象類(lèi)來(lái)而且確定其基本方法,如person類(lèi)有work(){sysout.println("做自己的工作")}方法,那么他的copy子類(lèi)teacher 類(lèi),默認就有了這個(gè)方法但是他的work()方法內容應該具體些所以重百寫(xiě)work(){sysout.println("沒(méi)事干,教書(shū)去")}當然這樣設計不太好反正就是這個(gè)意思嘛。
方法重載就像在teacher類(lèi)里面有個(gè)eat(String str){sysout.println("我要吃"+str)}還有個(gè)eat(){sysout.println("我要吃飯")}。反正這個(gè)意思, 至于語(yǔ)法相同點(diǎn)不管重寫(xiě)還是重度載方法名都是相同的,區別忘了呵呵。
題主完全無(wú)視什么是面向對象,什么是多態(tài),建議題主還是好好回歸課本。
可能題主有點(diǎn)兒 C 語(yǔ)言的底子,一頭栽在面向過(guò)程的坑里還沒(méi)出來(lái)。
而且題主有一個(gè)最重要的誤區,認為重寫(xiě)比另定義方法是“偷懶”,其實(shí)后者才是明顯的偷懶。看題主應該是學(xué)生,沒(méi)接觸過(guò)什么真正的項目,要知道在真正的項目里各個(gè)類(lèi)內部的邏輯與類(lèi)之間的關(guān)系的設計是十分復雜的,能找出若干個(gè)類(lèi)之間的聯(lián)系并抽出接口和抽象類(lèi)的工作量明顯要比隨心所欲的讓各個(gè)類(lèi)之間“各自為戰”困難的多,怎么在題主眼里變成是“偷懶”了?
那么問(wèn)題來(lái)了,既然多態(tài)這么費事兒,干嘛要用多態(tài)?因為多態(tài)雖然說(shuō)在前期設計上很費事兒(這就是為什么架構設計師比碼農工資高的緣故)最重要的好處就是后期維!護!擴!展!方!便!要知道實(shí)際開(kāi)發(fā)中沒(méi)有一個(gè)項目編碼完成后就不需要維護了的。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.115秒