想象一下,有一個父類Animal,子類有Dog,Tiger,Cat等等。我們實(shí)例化一個Dog類型orTiger類型的變量(即new Dog())看起來是很合理的事。但是!如果我們實(shí)例化一個Animal類型的變量,即new Animal(),是不是看起來有一點(diǎn)奇怪?Animal的實(shí)例化對象是什么?Dog是一條狗,Cat是一只貓,Animal是什么???
因此,我們發(fā)現(xiàn)有些類是不應(yīng)該被初始化的。(即不應(yīng)該存在被實(shí)例化的對象)
在本例子中,Animal就是抽象類,而Dog、Tiger和Cat這些都是具體類。
Fig.1 抽象類和具體類
二、設(shè)計(jì)抽象類而在java中,要想讓一個類不被初始化,只需要在類的聲明前面加上關(guān)鍵字abstract即可。
abstract class Animal{
public void roam();
}
抽象類代表沒有人能夠創(chuàng)建出該類的實(shí)例化對象,編譯器不會通過。
三、抽象類聲明引用變量雖然抽象類無法實(shí)例化對象,但是抽象類仍然可以聲明引用變量,抽象類只是無法實(shí)例化對象。
abstract class Animal{
public void roam();
}
public class MakeAnimal{
public void go(){
Animal a; //抽象類可以聲明引用變量
a = new Dog();
a = new Cat(); //該部分涉及多態(tài)的內(nèi)容
a.roam();
}
}
四、Tips抽象方法和抽象類一樣,都是用abstract關(guān)鍵字修飾。它的特點(diǎn)在于抽象方法沒有方法體:
public abstract void eat(); //沒有方法體,直接結(jié)束
二、為什么要有抽象方法?因?yàn)橛袝r沒有辦法給任何子類都抽象出都有意義的共同程序代碼。而抽象方法可以實(shí)現(xiàn)即使無法實(shí)現(xiàn)出方法的內(nèi)容,但是仍然可以定義出一組子類共同遵守的協(xié)議。(即都要實(shí)現(xiàn)的方法,即使父類中沒有方法體)
三、Tips你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站標(biāo)題:Java中的抽象類和抽象方法(abstract)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.chinadenli.net/article18/ijodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站排名、App開發(fā)、全網(wǎng)營銷推廣、虛擬主機(jī)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容