一、抽象類
抽象類是以修飾符abstract修飾的類牙丽,有點(diǎn)類似“模板”的作用癣丧,其目的是根據(jù)它的格式來(lái)創(chuàng)建和修改新的類扣墩。
定義抽象類的語(yǔ)法格式如下:
注意:
(1) 抽象方法只作聲明续誉,而不包含實(shí)現(xiàn),沒(méi)有方法體初肉,只能用于派生其子類
(2) 抽象類不能被實(shí)例化
(3) 抽象類可以但不是必須有抽象屬性和抽象方法酷鸦,但是一旦有了抽象方法,就一定要把這個(gè)類聲明為抽象類
(4) 抽象類所派生的子類必須覆蓋該抽象類的抽象方法
(5) 一個(gè)類被定義為抽象類牙咏,則該類就不能用new運(yùn)算符創(chuàng)建具體實(shí)例對(duì)象臼隔,而必須通過(guò)覆蓋方式來(lái)實(shí)現(xiàn)抽象類中的方法
(6)抽象類可以有構(gòu)造方法,且構(gòu)造方法可以被子類的構(gòu)造方法所調(diào)用妄壶,但構(gòu)造方法不能被聲明為抽象的
二摔握、接口
接口是一種特殊的抽象類,但也有區(qū)別
接口定義的語(yǔ)法格式如下:
注意:
(1) 接口不能被實(shí)例化
(2) 接口只能包含方法聲明丁寄,無(wú)方法體
(3) 接口的成員包括方法氨淌、屬性
(4) 接口中不能包含字段(域)、構(gòu)造函數(shù)伊磺、析構(gòu)函數(shù)
(5)數(shù)據(jù)成員都是靜態(tài)的且必須賦初值盛正,即數(shù)據(jù)成員必須是靜態(tài)常量
三、接口和抽象類的區(qū)別:
(1)抽象類可以有構(gòu)造方法屑埋,接口中不能有構(gòu)造方法豪筝。
(2)抽象類中可以有普通成員變量,接口中沒(méi)有普通成員變量
(3)抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法
(4) 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口续崖,但只能繼承一個(gè)抽象類敲街。
(5)接口可以被多重實(shí)現(xiàn),抽象類只能被單一繼承
(6)如果抽象類實(shí)現(xiàn)接口严望,則可以把接口中方法映射到抽象類中作為抽象方法而不必實(shí)現(xiàn)多艇,而在抽象類的子類中實(shí)現(xiàn)接口中方法
四、接口和抽象類的相同點(diǎn):
(1) 都可以被繼承
(2) 都不能被實(shí)例化
(3) 都可以包含方法聲明
(4) 派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法