在物件導向的概念中,所有的物件都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對 象的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。
抽象類用來描述一種型別應該具備的基本特徵與功能, 具體如何去完成這些行為由子類通過方法重寫來完成,如:寵物類中,各種寵物都會吃東西,但由於吃的東西不同,貓吃魚,狗吃骨頭,所以吃東西這個細節並不相同,我們就讓其子類具體實現。
特點: 抽象類不能被例項化(不能建立物件)
功能:用來進行型別隱藏和充當全域性變數。
關鍵字: 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 類中的方法不必是抽象的...