Java編程思想(20170818)

繼承和組合是java中很是經常使用的兩種建立新類型的方法,二者都能提升代碼的複用率。html

繼承主要是想讓子類繼承父類的基本特性;組合技術一般用於想在新類中使用現有類的功能,而非它的接口。二者的分別是"IS A"和"HAS A"的關係java

繼承:編程

複製代碼
class Shape { public void draw() { System.out.println("draw a shape"); } public void erase() { System.out.println("erase"); } } class Square extends Shape { @Override public void draw() { System.out.println("draw a Square"); } public static void main(String[] args) { Square s = new Square(); s.draw(); s.erase(); } }
複製代碼

 

組合:ide

複製代碼
class Draw { public void draw() { System.out.println("draw"); } } class Erase { public void erase() { System.out.println("erase"); } } class Work { public void work() { new Draw().draw(); new Erase().erase(); } public static void main(String[] args) { new Work().work(); } }
複製代碼

 

1、相比於組合,繼承有如下優勢:spa

一、在繼承中,子類自動繼承父類的非私有成員(default類型視是否同包而定),在須要時,可選擇直接使用或重寫。code

二、在繼承中,建立子類對象時,無需建立父類對象,由於系統會自動完成;而在組合中,建立組合類的對象時,一般須要建立其所使用的全部類的對象。htm

2、組合的優勢:對象

一、在組合中,組合類與調用類之間低耦合;而在繼承中子類與父類高耦合。blog

二、可動態組合。繼承

總結:

雖然繼承是OOP的一大特性,但不少時候並不推薦使用,由於它經常容易使結構複雜化,容易出錯。所以,除非咱們確信使用繼承會使程序效率最高,不然,不考慮使用它。

那咱們該如何判斷是否應該使用繼承呢?在java編程思想中提供了一個簡單的判斷方法,就是在考慮「真的須要向上轉型嗎?」。

來源;http://www.cnblogs.com/zhisuoyu/p/5270926.html

相關文章
相關標籤/搜索