1. 程式人生 > >Java編程思想(20170818)

Java編程思想(20170818)

容易出錯 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)