Java編程思想(20170818)
阿新 • • 發佈:2017-08-18
容易出錯 java編程 oid work java編程思想 編程 img style raw
繼承和組合是java中非常常用的兩種創建新類型的方法,兩者都能提高代碼的復用率。
繼承主要是想讓子類繼承父類的基本特性;組合技術通常用於想在新類中使用現有類的功能,而非它的接口。兩者的分別是"IS A"和"HAS A"的關系
繼承:
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();
}
}
組合:
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、在繼承中,子類自動繼承父類的非私有成員(default類型視是否同包而定),在需要時,可選擇直接使用或重寫。
2、在繼承中,創建子類對象時,無需創建父類對象,因為系統會自動完成;而在組合中,創建組合類的對象時,通常需要創建其所使用的所有類的對象。
二、組合的優點:
1、在組合中,組合類與調用類之間低耦合;而在繼承中子類與父類高耦合。
2、可動態組合。
總結:
雖然繼承是OOP的一大特性,但很多時候並不推薦使用,因為它常常容易使結構復雜化,容易出錯。因此,除非我們確信使用繼承會使程序效率最高,否則,不考慮使用它。
那我們該如何判斷是否應該使用繼承呢?在java編程思想中提供了一個簡單的判斷方法,就是在考慮“真的需要向上轉型嗎?”。
來源;http://www.cnblogs.com/zhisuoyu/p/5270926.html
Java編程思想(20170818)