java抽象類與介面

2021-09-23 13:54:00 字數 2091 閱讀 3917

類是物件的模板,抽象類和介面可以看做是具體的類的模板。

由於從某種角度講,介面是一種特殊的抽象類,它們的淵源頗深,有很大的相似之處,所以在選擇使用誰的問題上很容易迷糊。我們首先分析它們具有的相同點。

下面說一下抽象類和介面的主要區別。

1) 抽象類可以為部分方法提供實現,避免了在子類中重複實現這些方法,提高了**的可重用性,這是抽象類的優勢;而介面中只能包含抽象方法,不能包含任何實現。

1

public

abstract

classa6

}7public

class b extendsa11

}12public

class c extends

a16 }

抽象類a有兩個子類b、c,由於a中有方法method2的實現,子類b、c中不需要重寫method2方法,我們就說a為子類提供了公共的功能,或a約束了子類的行為。method2就是**可重用的例子。a 並沒有定義 method1的實現,也就是說b、c 可以根據自己的特點實現method1方法,這又體現了鬆散耦合的特性。

再換成介面看看:

1

public

inte***cea5

public

class b implementsa9

public

void

method2()12}

13public

class c implementsa17

public

void

method2()

20 }

介面a無法為實現類b、c提供公共的功能,也就是說a無法約束b、c的行為。b、c可以自由地發揮自己的特點現實 method1和 method2方法,介面a毫無掌控能力。

2) 乙個類只能繼承乙個直接的父類(可能是抽象類),但乙個類可以實現多個介面,這個就是介面的優勢。

1

inte***cea4

inte***ceb7

class c implements

a,b11

public

void

method2()14}

15//

可以如此靈活的使用c,並且c還有機會進行擴充套件,實現其他介面

16 a a=new

c();

17 b b=new

c();

18abstract

classa21

abstract

class b extendsa24

class c extendsb28

public

void

method2()

31 }

對於c類,將沒有機會繼承其他父類了。

介面可以多繼承;

介面:jiekou 

public

inte***ce

jiekou

inte***ce

j2 inte***ce j3 extends

j2, jiekou

class tjie implements

j3 @override

public

void

a3()

@override

public

void

a1()

@override

public

void

a2()

@override

public

void

a4()

}

測試類:

public

class

testjiekou

public

static

void

main(string args)

}

綜上所述,介面和抽象類各有優缺點,在介面和抽象類的選擇上,必須遵守這樣乙個原則:

posted @

2017-05-31 10:12

路迢迢 閱讀(

...)

編輯收藏

Java抽象類與介面

一.概念 在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是反過來卻不是這樣。並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。比如 如果我們進行乙個圖形編輯軟體的開發,就會發現問題領域存在著圓 三角形這樣一些具體概念。它們是不同的...

JAVA抽象類與介面

抽象方法 使用abstract關鍵字修飾的方法,沒有方法體,抽象方法只能使用public 或者protected修飾。public abstract void fun 抽象類 使用abstract關鍵字修飾的類 包含抽象方法的類是抽象類 抽象類可以不包含抽象方法 抽象類只能被繼承,不能自己建立例項 ...

Java 抽象類 與 介面

如果乙個類含有抽象方法,則稱這個類是抽象類,抽象類必須使用abstract 關鍵字修飾。因為抽象類中含有抽象方法,所以不能用抽象類建立物件。抽象方法 只有宣告,沒有實現。如果乙個類繼承了乙個抽象類,他必須實現這個抽象類的全部抽象方法,否則,他依然是個抽象類。如下 private abstract c...