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