抽象類與介面

2021-10-16 06:34:16 字數 2061 閱讀 8838

在物件導向的概念中,所有的物件都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對 象的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。

抽象類用來描述一種型別應該具備的基本特徵與功能, 具體如何去完成這些行為由子類通過方法重寫來完成,如:寵物類中,各種寵物都會吃東西,但由於吃的東西不同,貓吃魚,狗吃骨頭,所以吃東西這個細節並不相同,我們就讓其子類具體實現。

特點: 抽象類不能被例項化(不能建立物件)

功能:用來進行型別隱藏和充當全域性變數。

關鍵字: abstract 修飾類作為乙個抽象類;

注意:可以有靜態屬性和靜態方法,通過抽象類直接呼叫

當關鍵字abstract修飾乙個方法,該方法是抽象方法。

抽象方法沒有方法體

當抽象類中有抽象方法時,子類必須重寫該方法,除非子類也是抽象類

抽象類可以有一般方法,但非抽象類不能有抽象方法

/*

* 抽象類使用abstract關鍵字定義

* 2.如果當前類中包含抽象方法,則當前類必須為抽象類

*/public

abstract

class

demo}/*

* 3.子類繼承抽象類,必須「重寫」父類中的抽象方法;

* 除非子類也是抽象類

*/class

demoson

extends

demo

@override

protected

void

dosth2()

}

public

class

test01

}

public

final

class

cat

public

class

test01

// 方法引數的型別前使用final,代表該引數只能用於接收引數值,但不能修改

public

static

void

dosth

(final string param)

}

public

class

cat}

final 修飾的方法不能被 重寫;

父類的final方法是不能被子類所 覆蓋 的,也就是說子類是不能夠存在和父類一模一樣的方法的;

final 修飾的方法可以被 過載,且過載方法可以 不是 final 修飾。

介面是一種約束形式,其中只包括成員定義, 不包含成員實現的內容;

為不相關的類提供通用的處理服務

public

inte***ce

myinte***ce

// 從jdk8開始,允許出現default定義的預設方法

public

default

void

dosth5()

}

使用 implements 實現介面,實現介面需要重寫介面的全部方法;

使用 implements 實現介面時,允許實現多個介面, 多個介面間用 「,」 分割;(注意:實現多個介面時,需要同時實現多個介面的方法。)

public

inte***ce

myable

public

class

test01}/*

* 類 「implements實現 」 乙個介面

* 該類被稱為「實現類」

*/class

myinte***ceimpl

implements

myinte***ce

,myable

@override

public

void

dosth3()

@override

public

void

dox(

)}

介面與抽象類

介面與抽象類區別 個人總結 語法結構 1 型別可以繼承多個介面,但是只能繼承乙個抽象類,即不支援多重繼承。2 介面可以用於值型別和引用型別,例如struct和class,而抽象類不能用於值型別,只能用於引用型別。3 抽象類定義可以包括建構函式,字段資料,非抽象成員 具體實現 等,而介面只能包括抽象成...

介面與抽象類

抽象類 當抽象類作為父類時,他的子類對其中的抽象類方法有不同的方法體 簡單舉例為 classhorse mammal,ilangbound public int numeroflegs return 4 inte ce ilandbound int numberoflegs 介面例子 main函式 ...

抽象類與介面

記住抽象類與普通類的唯一區別就是不能建立例項物件和允許有abstract 方法含有abstract 修飾符的 class 即為抽象類,abstract 類不能建立的例項物件。含有 abstract 方法的類必須定義為 abstract class abstract class 類中的方法不必是抽象的...