抽象類與介面的區別

2021-10-04 09:33:05 字數 2109 閱讀 7308

1、抽象類:

(1)為什麼需要抽象類?

在多型的條件下,父類的方法始終是冗餘的,即永遠不會被執行。

(2)是什麼?

沒有方法體的方法是抽象方法,用abstract修飾。

(3)特點:

1)具有抽象方法的類一定是抽象類,要用abstract修飾。

2)抽象類中可以沒有抽象方法,可以有具體方法。

3)抽象類不能建立物件,但能有構造方法,該方法由子類呼叫。

4)抽象類中全部抽象方法必須都由子類實現,否則子類必須是抽象類。

5)抽象類不能被final修飾,因為final修飾的類無子類,從而抽象方法無法被實現;且抽象方法不能被final和static修飾,否                  則子類不能實現該抽象方法。

(4)抽象類與普通類的區別:

抽象類由abstract修飾,普通類沒有;抽象類不能建立構造方法,而普通類可以;抽象類中可以有抽象方法,但普通類中               不能有。

//mammal父類

public abstract class mammal//抽象類中可以有構造方法,但不能建立物件,否則報錯。

}//whale子類

public class whale extends mammal

public void breath()

} //test類

public class test

}

2、介面:

(1)為什麼需要介面?

抽象類中可以定義任何合法的方法和成員變數;若乙個抽象類中的方法都是抽象方法,則該類可以定義為介面。

(2)怎麼做?

用inte***ce定義介面,通過implements實現介面。

(3)特點:

1)介面通常用「i」開頭。

2)介面中不能建立物件,也不能有構造方法。

3)介面中的抽象方法預設public abstract,所以定義方法時可以省略public abstract或abstract,但方法一定是public                           abstract屬性。

4)介面中的成員變數預設的是public static final(靜態常量),也可以忽略;且實現介面的同時可以繼承介面中的常量(不                   能更改)。

5)乙個介面可以繼承多個其他介面(同包或不同包),每個介面之間用逗號間隔。

6)類通過implements關鍵字實現介面,且乙個類可以實現多個介面,每個介面之間用逗號間隔。

7)乙個實現介面的類必須實現介面中的所有方法,否則該類必須是抽象類。

8)jdk8以前版本的jdk中,定義的介面只能含有抽象方法和靜態常量,而jdk8及以後版本的介面中還可以含有多個                         default或static修飾的具體方法。

//imammal類

inte***ce ia

inte***ce ib

public inte***ce imammal extends ia,ib

//whale類

public class whale implements imammal,ia

public void breath()

}//test類

public class test

}

1、定義:抽象類是public abstract class 類名 {};介面是public inte***ce 介面名 {}。

2、抽象方法:抽象類中的方法不一定都是抽象方法,而介面中的方法全是抽象方法。

3、構造方法:抽象類中可以有構造方法,而介面中不能有構造方法。

4、成員變數:抽象類中可以定義任意合法的成員變數,而介面中只能定義public static final成員變數即靜態常量。

5、方法:抽象類中可以定義任意合法的方法;而介面中只能定義public abstract方法,但jdk8.0+可以定義多個static或default修飾的具體方法。

6、繼承:抽象類只能單繼承,而乙個介面可以繼承多個其他介面。

7、實現:抽象類使用extends實現且只能實現乙個;而介面通過implements實現,且乙個類可以實現多個介面。

java抽象類與介面的區別抽象類與介面的特性是什麼

介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...

抽象類與介面的區別

c 中可以多繼承介面,卻只能繼承自乙個抽象類 抽象類中的方法可以包含一些實現,但介面卻只能定義方法的一種規範,不能包含實現 繼承類必須實現藉口中所有的方法,而不一定要實現抽象類中的所有方法 抽象類可以繼承自抽象類 但介面不能繼承自介面 派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員 ...

抽象類與介面的區別

c 中可以多繼承介面,卻只能繼承自乙個抽象類 抽象類中的方法可以包含一些實現,但介面卻只能定義方法的一種規範,不能包含實現 繼承類必須實現藉口中所有的方法,而不一定要實現抽象類中的所有方法 抽象類可以繼承自抽象類 但介面不能繼承自介面 派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員 ...