新聞中心
這篇文章將為大家詳細講解有關(guān)java的封裝繼承多態(tài)的示例分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、全州網(wǎng)站維護、網(wǎng)站推廣。
封裝
封裝可以拆開理解,裝,是把數(shù)據(jù)和方法放進了類里;封,把裝進去的數(shù)據(jù)和成員方法加上訪問權(quán)限。對于外界,內(nèi)部細節(jié)是透明的,暴露給外面的是它的訪問方法。
繼承
繼承,是為了重用父類代碼。兩個類若具有is a的關(guān)系就可以用extends。另外,繼承也為實現(xiàn)多態(tài)做了鋪墊。
多態(tài)
程序中定義的引用變量(java有兩大數(shù)據(jù)類型,內(nèi)部數(shù)據(jù)類型和引用數(shù)據(jù)類型)所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編譯時并不確定,而是在程序運行期間才確定,即一個引用變量到低指向哪個類的實例對象,該引用變量發(fā)出的方法調(diào)用到底是哪個類中實現(xiàn)的方法,必須在程序運行期間才能決定。
在理解多態(tài)時,總是逃不掉“向上轉(zhuǎn)型”。
問題的核心在于,一般情況下,在子類繼承父類后,子類具有父類的所有成員和方法。但是在向上轉(zhuǎn)型之后,子類中一些獨有的成員和方法對于該父類類型的引用變量則“不可見”。
實例
package binaryheap.test; import java.awt.image.SinglePixelPackedSampleModel; //創(chuàng)建一個Animal類 class Animal { public void run() { System.out.println("Animal在奔跑?。?!"); sing(); } public void sing() { System.out.println("Animal在唱歌~~~"); } } //創(chuàng)建一個子類繼承父類 class Lion extends Animal { // 重載run()方法,和父類中的run()方法不是一個 // 向上轉(zhuǎn)型時會丟失該方法 public void run(String anotherAnimal) { System.out.println(("Lion在追一只" + anotherAnimal));; sing(); } // 重寫 public void sing() { System.out.println("Lion在唱歌~~~"); } } public class BH { public static void main(String[] args) { // 創(chuàng)建一個父類引用,但是指向Lion對象 Animal animal = new Lion(); animal.run(); } }
結(jié)果:
Animal在奔跑?。?!
Lion在唱歌~~~
Animal animal = new Lion(); 向上轉(zhuǎn)型后的Animal類型的引用,丟失了重載的方法run(),即子類中的run(),指向的是父類的run(),因此輸出“Animal在奔跑”,而不是“Lion在奔跑”。run()方法中調(diào)用了sing()方法,因為sing()方法被重寫,引用能夠找到sing()方法,因此引用調(diào)用此sing()方法(動然調(diào)用),輸出“Lion在唱歌”。
實現(xiàn)多態(tài)的必要條件為:繼承、重寫、向上轉(zhuǎn)型(或者說父類引用指向子類對象)。其實現(xiàn)機制為:調(diào)用那個方法是由被引用對象的類型決定,而不是引用變量的類型決定的,并且這個被調(diào)用的方法必須是被子類重寫過的。
總結(jié):
使用父類的引用指向子類對象
該引用只能調(diào)用父類中定義的方法和變量
若子類重寫了父類的一個方法(只能重寫方法,不能重寫變量,否則編譯時期會報錯),那么調(diào)用的時候會調(diào)用子類的這個方法。
關(guān)于java的封裝繼承多態(tài)的示例分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文名稱:java的封裝繼承多態(tài)的示例分析
文章起源:http://fisionsoft.com.cn/article/jpgssp.html