想象一下,有一個父類Animal,子類有Dog,Tiger,Cat等等。我們實例化一個Dog類型orTiger類型的變量(即new Dog())看起來是很合理的事。但是!如果我們實例化一個Animal類型的變量,即new Animal(),是不是看起來有一點奇怪?Animal的實例化對象是什么?Dog是一條狗,Cat是一只貓,Animal是什么???
“專業(yè)、務(wù)實、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于網(wǎng)站設(shè)計制作、成都做網(wǎng)站、軟件開發(fā)、設(shè)計服務(wù)業(yè)務(wù)。我們始終堅持以客戶需求為導(dǎo)向,結(jié)合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!因此,我們發(fā)現(xiàn)有些類是不應(yīng)該被初始化的。(即不應(yīng)該存在被實例化的對象)
在本例子中,Animal就是抽象類,而Dog、Tiger和Cat這些都是具體類。
Fig.1 抽象類和具體類
二、設(shè)計抽象類而在java中,要想讓一個類不被初始化,只需要在類的聲明前面加上關(guān)鍵字abstract即可。
abstract class Animal{
public void roam();
}
抽象類代表沒有人能夠創(chuàng)建出該類的實例化對象,編譯器不會通過。
三、抽象類聲明引用變量雖然抽象類無法實例化對象,但是抽象類仍然可以聲明引用變量,抽象類只是無法實例化對象。
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)鍵字修飾。它的特點在于抽象方法沒有方法體:
public abstract void eat(); //沒有方法體,直接結(jié)束
二、為什么要有抽象方法?因為有時沒有辦法給任何子類都抽象出都有意義的共同程序代碼。而抽象方法可以實現(xiàn)即使無法實現(xiàn)出方法的內(nèi)容,但是仍然可以定義出一組子類共同遵守的協(xié)議。(即都要實現(xiàn)的方法,即使父類中沒有方法體)
三、Tips你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備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://bm7419.com/article18/ijodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站排名、App開發(fā)、全網(wǎng)營銷推廣、虛擬主機、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容