糯米文學吧

位置:首頁 > 計算機 > java語言

java的繼承與組合的區別

java語言1.87W

  繼承和組合的概念

java的繼承與組合的區別

在新類裏簡單地創建原有類的對象。我們把這種方法叫作“組合”,因為新類由現有類的對象合併而成。我們只是簡單地重複利用代碼的功能,而不是採用它的形式。

第二種方法是創建一個新類,將其作為現有類的一個“類型”。我們可以原樣採取現有類的形式,並在其中加入新代碼,同時不會對現有的類產生影響。這種魔術般的行為叫作“繼承”(Inheritance),涉及的大多數工作都是由編譯器完成的。對於面向對象的程序設計,“繼承”是最重要的基礎概念之一。對於組合和繼承這兩種方法,大多數語法和行為都是類似的(因為它們都要根據現有的類型生成新類型)。

  使用場合:

組合:各部件之間沒什麼關係,只需要組合即可。like組裝電腦,需要new CPU(),new RAM(),new Disk()……

  演示代碼如下:

public class Computer {

public Computer() {

CPU cpu=new CPU();

RAM ram=new RAM();

Disk disk=new Disk();

}

}

class CPU{ }

class RAM{ }

class Disk{ }

繼承:子類需要具有父類的.功能,各子類之間有所差異。like Shape類作為基類,子類有Rectangle,CirCle,Triangle……

  演示代碼如下:

class Shape {

public void draw() {

tln("draw a shape");

}

public void erase() {

tln("erase");

}

}

class Square extends Shape {

@Override

public void draw() {

tln("draw a Square");

}

public static void main(String[] args) {

Square s = new Square();

();

e();

}

}

  一、相比於組合,繼承有以下優點:

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

2、在繼承中,創建子類對象時,無需創建父類對象,因為系統會自動完成;而在組合中,創建組合類的對象時,通常需要創建其所使用的所有類的對象。

  二、組合的優點:

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

2、可動態組合。

總結:

雖然繼承是OOP的一大特性,但很多時候並不推薦使用,因為它常常容易使結構複雜化,容易出錯。因此,除非我們確信使用繼承會使程序效率最高,否則,不考慮使用它。

標籤:JAVA 繼承