抽象類和介面

2021-10-16 22:40:41 字數 3433 閱讀 6369

抽象類一般用來做父類,功能的實現由繼承的子類來做

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.介面...