更新時(shí)間:2020-08-06 16:25:16 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2172次
2抽象類(lèi)
2.1概念及案例
假設(shè)有一個(gè)Employee和Student類(lèi),考慮一下對(duì)這兩個(gè)類(lèi)的擴(kuò)展。比如每個(gè)員工或者學(xué)生都有姓名,因此可以將name放在較高層次的超類(lèi)Person中。另外可以在Person中再添加一個(gè)方法getDescription,它可以返回對(duì)一個(gè)人的描述。因?yàn)椴恢肋@個(gè)人是學(xué)生還是員工,所以該方法是抽象(abstract)的,也就是沒(méi)有方法體的。
如下代碼:
public?abstract?class?Person?{
private?String?name;
public?Person(String?name){
this.name?=?name;
}
public?String?getName()?{
return?name;
}
public?abstract?void?getDescription();
}
抽象類(lèi)要使用關(guān)鍵字:abstract
抽象類(lèi)中除了可以包含抽象方法外,也可以包含具體數(shù)據(jù)和具體方法。抽象方法充當(dāng)一個(gè)占位的角色。
擴(kuò)展抽象類(lèi)可以有兩種選擇:
Ø一種是在子類(lèi)中定義部分抽象方法或不定義抽象方法,這樣就必須將子類(lèi)也標(biāo)記為抽象類(lèi);
Ø另一種是定義全部的抽象方法,這樣子類(lèi)就不是抽象的了。
類(lèi)即使不含抽象方法,也可以將類(lèi)聲明為抽象的,不過(guò)這樣沒(méi)有什么意義。
抽象類(lèi)不能被實(shí)例化。也就是說(shuō),將一個(gè)類(lèi)聲明為abstract,就不能創(chuàng)建這個(gè)類(lèi)的對(duì)象了,但是可以創(chuàng)建一個(gè)具體子類(lèi)的對(duì)象。需要注意的是,可以定義一個(gè)抽象類(lèi)的對(duì)象變量,但是它只能引用非抽象子類(lèi)的對(duì)象:Person p=new Student();//這里p是一個(gè)抽象類(lèi)Person的變量,但他引用非抽象子類(lèi)Student的實(shí)例。
public?class?Student?extends?Person{
public?Student(String?name)?{
super(name);
}
@Override
public?void?getDescription()?{
System.out.println("我是一個(gè)學(xué)生!");
}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“編程概念之Java抽象類(lèi)有什么用?”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743