JAVA之抽象類與介面的區別

2021-09-01 22:35:39 字數 813 閱讀 8256

抽象類:用abstract修飾的類稱為抽象類。

它可以有構造器,但是不能構造物件,抽象類中的構造器,在構造具體子類物件時呼叫,抽象方法決定抽象類,抽象類中可以沒有抽象方法,具體父型別可以作為引用型別的宣告;抽象父型別也可以作為引用型別的宣告;如果乙個具體子類繼承抽象類,那麼就要實現抽象父類中的所有抽象方法;在子類中重寫父類方法時,訪問級別要大於等於原有訪問級別;

介面:是一種統一的標準,是乙個特殊的「模版」

介面中只能有:1、常量2、抽象方法;在定義方法時,具體類可以做形參,抽象類可以作形參,介面可以做形參;無論誰做形參,實參一定是具體類物件!(具體父類的具體子類;抽象類的具體子類;介面的具體實現類;)類可以在繼承乙個父類的基礎上,實現多個介面;

抽象類與介面的異同:

相同處:1、不能構造物件2、都可以定義抽象方法3、設計的目的是為了被繼承或被實現4、與子類或實現類的關係都屬於is-a,可以用抽象類或介面的引用來作型別宣告,進而統一呼叫具體子類或具體實現類;

不同處:1、抽象類中可以有構造器,但介面中沒有2、無論繼承鏈的長短,繼承鏈上所有的類都是同一類事物;同乙個介面中實現類,可以沒有任何關係。3、抽象類中可以有抽象方法,也可以有具體方法,但介面中的方法都是抽象方法;4、頂層抽象類是object類的子類,它繼承了父類的所有成員;而介面中則除了自定義的的成員外,沒有額外資料;介面是「輕量級」的抽象類,或者說是100%的抽象類;5、抽象類程式設計時,內聚性低,耦合度高;介面程式設計,內聚性高,耦合度低(好)6、介面可以實現多繼承,乙個介面可以繼承多個介面。但是抽象類卻不能,只能單繼承。乙個介面不能實現另外乙個介面。

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

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

java抽象類與介面的區別

含有abstract修飾符的class 即為抽象類,abstract類不能建立例項物件,含有abstract的方法的類必須定義為abstract class abstract class 裡的方法不必是抽象的,抽象類中定義抽象方法必須放在具體子類中實現,所以呀,不能有抽象的構造方法或抽象的靜態方法,...

JAVA抽象類與介面的區別

抽象類和介面的區別 抽象類是乙個模板,類的模板,而介面是乙個標準。序號區別點 抽象類介面1定義 包含抽象方法的類就是抽象類 抽象方法和全域性常量的集合2組成 構造方法,抽象方法,普通方法 常量和抽象方法 常量,變數3使用 子類繼承抽象類 extends 子類實現介面 implements 關鍵字 a...