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