Re: [問題] 繼承、界面、抽象

看板java作者 (老子我最神)時間9年前 (2015/04/10 22:50), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串9/9 (看更多)
※ 引述《MephistoH (默非斯托)》之銘言: : 動物會叫, 但各有各的叫法 : 在叫的時候, 就用介面~ : "其實abstract class表示的是"is a"關係,interface表示的是"like a"關係 第一次看到 like-a ... 不認為 interface 是 like-a ... 直接提我實作的看法及個人經驗,如有錯誤歡迎指證 目前實作上會用到 abstract 通常都是 Template Method 模式 從良葛格網站例子的 GuessGame 來看就明白 http://openhome.cc/Gossip/DesignPattern/TemplateMethod.htm 而我通常不會以 abstract class 當作頂層 class (當然也是會有 abstract class 當頂層的時候) 我的話會製作一個 interface Game,有個方法 go() GuessGame 會 implements Game 而玩 game 就會是 Game myGame = new ConsoleGame(); myGame.go(); 若你有其他模式的 Game 如 PartyGame 你也可以 implements Game 做自己的 Party template game 要可以玩 (go),或是要可以讀取進度 (load),都是一個行為 自然就是 inteface 定義行為 而 GuessGame 或 PartyGame 是 template,自然就是 abstract 如果你有用到一些open source,他們class結構通常都是如此 用 abstract 當作 template 去 implements interface 例子1: spring LDAP: http://goo.gl/P4Ycq6 例子2: DBUnit: http://goo.gl/IeP9Md -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.192.133 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1428677459.A.960.html

04/12 02:08, , 1F
常看到定個interface 然後要有預設行為就用abstract
04/12 02:08, 1F

04/12 02:09, , 2F
class去implement這個interface 要用再繼承這個class
04/12 02:09, 2F

04/12 11:16, , 3F
java8 有 default method 也可以參考參考 :)
04/12 11:16, 3F
文章代碼(AID): #1L9-DJbW (java)
討論串 (同標題文章)
文章代碼(AID): #1L9-DJbW (java)