抽象類一般用來做父類,功能的實現由繼承的子類來做
public
abstract
class
pet
抽象類不能被例項化
但可以建立乙個引用變數,其型別是乙個抽象類,指向非抽象的子類例項–父類的引用指向子類的物件
普通類可以被例項化
有無方法體
抽象類中可以沒有抽象方法,但包含了抽象方法的類必須被定義為抽象類
如果子類沒有實現父類的所有抽象方法,子類必須被定義為抽象類
沒有抽象構造方法(初始化物件,但抽象類不能例項化),也沒有抽象靜態方法(1、類方法 類名.方法 不需要例項化 2、抽象方法可以被重寫,但是靜態方法不能被重寫)
抽象類中可以有非抽象的構造方法,建立子類的例項時可能呼叫
實現防盜門的功能
防盜門是乙個門 is-a的關係
防盜門有乙個鎖 has-a的關係
能力:上鎖、開鎖
將門定義為抽象類,鎖定義為介面
防盜門繼承門,實現鎖的介面
public
abstract
class
door
public
inte***ce
lock
public
class
safedoor
extends
door
implements
lock
@override
public
void
close()
@override
public
void
lockup()
@override
public
void
lockdown()
}
實現類
定義publicinte***cemyinte***ce
特性1、介面不可以被例項化–都是抽象方法 只是一種約定和能力
2、實現類必須實現介面的所有方法
3、實現類可以實現多個介面(implements、多個介面使用逗號隔開 )
4、介面中的變數都是靜態常量(public static final)
5、所有方法預設都是:public abstract
usb介面本身沒有實現任何功能
usb介面規定了資料傳輸的要求
public
inte***ce
usb
usb介面可以被多種usb裝置實現
public
class
usbfan
implements
usb}
}public
class
usbmouse
implements
usb}
public
class
usbflash
implements
usb}
實現類–模擬實現使用者使用usb裝置的場景
public
class
user
public
static
void
main
(string[
] args)
}
有些介面只有名稱
程式設計時面向介面的約定而不考慮具體實現
開發印表機
墨盒:彩色、黑白
紙張型別:a4、b5
墨盒和紙張都不是印表機廠商提供的
印表機廠商要相容市場上的墨盒、紙張
墨盒和紙張的規格是一種約定
印表機需要遵守這些約定
用面向介面程式設計的方式開發
制定墨盒、紙張的約定或標準
其他廠商按照墨盒、紙張的標準生產墨盒、紙張
印表機廠商使用墨盒、紙張的標準開發印表機
public
inte***ce
inkbox
public
inte***ce
*****
public
inte***ce
blackinkbox
extends
inkbox
public
inte***ce
a4*****
extends
*****
public
abstract
class
printer
implements
inkbox
,*****
public
class
normalprinter
extends
printer
implements
blackinkbox
,a4*****
}
介面中的成員變數
預設都是public static final的,必須顯式初始化
介面中的方法
預設都是public abstract的
介面沒有構造方法,不能被例項化
乙個介面不能實現另乙個介面,但可以繼承多個其他介面
乙個類必須實現介面抽象方法(implements),除非這個類也是抽象類
相同點
代表系統的抽象層
都不能被例項化
都能包含抽象方法
用於描述系統提供的服務,不必提供具體實現
不同點
在抽象類中可以為部分方法提供預設實現,而介面中只能包含抽象方法
抽象類便於復用,介面便於**維護
乙個類只能繼承乙個直接的父類,但可以實現多個介面
使用原則
介面做系統與外界互動的視窗
介面提供服務
介面本身一旦制定,就不允許隨意修改
抽象類可完成部分功能實現,還有部分功能可作為系統的擴充套件點
介面和抽象類
介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...
抽象類和介面
抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...
抽象類和介面
1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...