最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解java封裝繼承多態(tài)

 更新時(shí)間:2019年03月28日 09:08:22   作者:海綿愛上星  
這篇文章主要介紹了java封裝繼承多態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

面向?qū)ο缶幊蹋∣bject Oriented Programming)有三大特性:封裝、繼承、多態(tài)。在這里,和大家一起加深對(duì)三者的理解。

封裝

封裝可以拆開理解,裝,是把數(shù)據(jù)和方法放進(jìn)了類里;封,把裝進(jìn)去的數(shù)據(jù)和成員方法加上訪問(wèn)權(quán)限。對(duì)于外界,內(nèi)部細(xì)節(jié)是透明的,暴露給外面的是它的訪問(wèn)方法。

繼承

繼承,是為了重用父類代碼。兩個(gè)類若具有is a的關(guān)系就可以用extends。另外,繼承也為實(shí)現(xiàn)多態(tài)做了鋪墊。

多態(tài)

程序中定義的引用變量(java有兩大數(shù)據(jù)類型,內(nèi)部數(shù)據(jù)類型和引用數(shù)據(jù)類型)所指向的具體類型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編譯時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量到低指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在程序運(yùn)行期間才能決定。
在理解多態(tài)時(shí),總是逃不掉“向上轉(zhuǎn)型”。

問(wèn)題的核心在于,一般情況下,在子類繼承父類后,子類具有父類的所有成員和方法。但是在向上轉(zhuǎn)型之后,子類中一些獨(dú)有的成員和方法對(duì)于該父類類型的引用變量則“不可見”。

實(shí)例

package binaryheap.test;

import java.awt.image.SinglePixelPackedSampleModel;

//創(chuàng)建一個(gè)Animal類
class Animal {
	public void run() {
		System.out.println("Animal在奔跑?。?!");
		sing();
	}

	public void sing() {
		System.out.println("Animal在唱歌~~~");
	}

}

//創(chuàng)建一個(gè)子類繼承父類
class Lion extends Animal {

	// 重載run()方法,和父類中的run()方法不是一個(gè)
	// 向上轉(zhuǎn)型時(shí)會(huì)丟失該方法
	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)建一個(gè)父類引用,但是指向Lion對(duì)象
		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()方法,因?yàn)閟ing()方法被重寫,引用能夠找到sing()方法,因此引用調(diào)用此sing()方法(動(dòng)然調(diào)用),輸出“Lion在唱歌”。

實(shí)現(xiàn)多態(tài)的必要條件為:繼承、重寫、向上轉(zhuǎn)型(或者說(shuō)父類引用指向子類對(duì)象)。其實(shí)現(xiàn)機(jī)制為:調(diào)用那個(gè)方法是由被引用對(duì)象的類型決定,而不是引用變量的類型決定的,并且這個(gè)被調(diào)用的方法必須是被子類重寫過(guò)的。

總結(jié):

  1. 使用父類的引用指向子類對(duì)象
  2. 該引用只能調(diào)用父類中定義的方法和變量
  3. 若子類重寫了父類的一個(gè)方法(只能重寫方法,不能重寫變量,否則編譯時(shí)期會(huì)報(bào)錯(cuò)),那么調(diào)用的時(shí)候會(huì)調(diào)用子類的這個(gè)方法。

此外,在多態(tài)引用時(shí),可能會(huì)涉及到超類的構(gòu)造方法。調(diào)用超類的構(gòu)造方法的順序是先調(diào)用最遠(yuǎn)的超類的構(gòu)造方法。

以上所述是小編給大家介紹的java封裝繼承多態(tài)詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java中的逃逸問(wèn)題心得

    Java中的逃逸問(wèn)題心得

    本篇文章是作者在學(xué)習(xí)了Java中的逃逸相關(guān)知識(shí)后的心得分享,一起跟著小編學(xué)習(xí)下。
    2018-02-02
  • springboot自定義Starter過(guò)程解析

    springboot自定義Starter過(guò)程解析

    這篇文章主要介紹了springboot自定義Starter過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java抓取網(wǎng)頁(yè)數(shù)據(jù)示例

    java抓取網(wǎng)頁(yè)數(shù)據(jù)示例

    要通java獲取整個(gè)網(wǎng)頁(yè)的html內(nèi)容,或者某個(gè)網(wǎng)絡(luò)文件的內(nèi)容,可以使用java提供的HttpURLConnection類來(lái)實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)內(nèi)容的抓取
    2014-03-03
  • Spring依賴注入Dependency Injection的三種方式

    Spring依賴注入Dependency Injection的三種方式

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念。具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例
    2023-02-02
  • Spring事務(wù)的七種傳播行為

    Spring事務(wù)的七種傳播行為

    這篇文章主要介紹了Spring事務(wù)的七種傳播行為,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容解說(shuō),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 微信跳一跳刷分java代碼實(shí)現(xiàn)

    微信跳一跳刷分java代碼實(shí)現(xiàn)

    這篇文章主要介紹了微信跳一跳刷分java代碼實(shí)現(xiàn),還為大家分享了java刷微信跳一跳問(wèn)題集,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 實(shí)例解析Java關(guān)于static的作用

    實(shí)例解析Java關(guān)于static的作用

    只要是有學(xué)過(guò)Java的都一定知道static,也一定能多多少少說(shuō)出一些作用和注意事項(xiàng)。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java中使用Apache POI讀取word文件簡(jiǎn)單示例

    Java中使用Apache POI讀取word文件簡(jiǎn)單示例

    這篇文章主要介紹了Java中使用Apache POI讀取word文件簡(jiǎn)單示例,本文著重介紹了一些必要條件,然后給出一個(gè)簡(jiǎn)單讀取示例,需要的朋友可以參考下
    2015-06-06
  • JUnit中獲取測(cè)試類及方法的名稱實(shí)現(xiàn)方法

    JUnit中獲取測(cè)試類及方法的名稱實(shí)現(xiàn)方法

    這篇文章主要介紹了JUnit中獲取測(cè)試類及方法的名稱實(shí)現(xiàn)方法,本文使用了JUnit中提供的TestName實(shí)現(xiàn),不過(guò)還有一些編程細(xì)節(jié)需要注意,需要的朋友可以參考下
    2015-06-06
  • Java實(shí)現(xiàn)動(dòng)態(tài)生成GIF圖像詳解

    Java實(shí)現(xiàn)動(dòng)態(tài)生成GIF圖像詳解

    在互聯(lián)網(wǎng)上有許多有趣的場(chǎng)景,其中的一種就是動(dòng)圖。這不是視頻,而是一種GIF圖像信息。本文將利用Java實(shí)現(xiàn)動(dòng)態(tài)生成GIF圖像功能,需要的可以參考一下
    2022-09-09

最新評(píng)論

镇雄县| 通化县| 科技| 宕昌县| 饶阳县| 高碑店市| 邯郸县| 峨边| 乌海市| 广平县| 威信县| 美姑县| 枣阳市| 武胜县| 东明县| 扶余县| 广平县| 洛隆县| 冷水江市| 砀山县| 宜兰县| 灵川县| 舟山市| 吴忠市| 肥东县| 中卫市| 寿光市| 历史| 大新县| 乐清市| 浑源县| 景德镇市| 肃宁县| 长兴县| 阜新市| 翁牛特旗| 扎兰屯市| 达州市| 维西| 东源县| 云浮市|