91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java的封裝繼承多態的示例分析

發布時間:2021-06-12 19:06:29 來源:億速云 閱讀:228 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關java的封裝繼承多態的示例分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

封裝

封裝可以拆開理解,裝,是把數據和方法放進了類里;封,把裝進去的數據和成員方法加上訪問權限。對于外界,內部細節是透明的,暴露給外面的是它的訪問方法。

繼承

繼承,是為了重用父類代碼。兩個類若具有is a的關系就可以用extends。另外,繼承也為實現多態做了鋪墊。

多態

程序中定義的引用變量(java有兩大數據類型,內部數據類型和引用數據類型)所指向的具體類型和通過該引用變量發出的方法調用在編譯時并不確定,而是在程序運行期間才確定,即一個引用變量到低指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在程序運行期間才能決定。
在理解多態時,總是逃不掉“向上轉型”。

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

實例

package binaryheap.test;

import java.awt.image.SinglePixelPackedSampleModel;

//創建一個Animal類
class Animal {
	public void run() {
		System.out.println("Animal在奔跑!!!");
		sing();
	}

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

}

//創建一個子類繼承父類
class Lion extends Animal {

	// 重載run()方法,和父類中的run()方法不是一個
	// 向上轉型時會丟失該方法
	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) {
		// 創建一個父類引用,但是指向Lion對象
		Animal animal = new Lion();
		animal.run();
	}
}

結果:

Animal在奔跑!!!
Lion在唱歌~~~

Animal animal = new Lion(); 向上轉型后的Animal類型的引用,丟失了重載的方法run(),即子類中的run(),指向的是父類的run(),因此輸出“Animal在奔跑”,而不是“Lion在奔跑”。run()方法中調用了sing()方法,因為sing()方法被重寫,引用能夠找到sing()方法,因此引用調用此sing()方法(動然調用),輸出“Lion在唱歌”。

實現多態的必要條件為:繼承、重寫、向上轉型(或者說父類引用指向子類對象)。其實現機制為:調用那個方法是由被引用對象的類型決定,而不是引用變量的類型決定的,并且這個被調用的方法必須是被子類重寫過的。

總結:

  1. 使用父類的引用指向子類對象

  2. 該引用只能調用父類中定義的方法和變量

  3. 若子類重寫了父類的一個方法(只能重寫方法,不能重寫變量,否則編譯時期會報錯),那么調用的時候會調用子類的這個方法。

關于java的封裝繼承多態的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海门市| 福清市| 定襄县| 夹江县| 安陆市| 阿尔山市| 余庆县| 齐河县| 离岛区| 日土县| 平顶山市| 游戏| 夏津县| 荆门市| 宁阳县| 临洮县| 宁晋县| 新干县| 丹棱县| 上蔡县| 伊川县| 无为县| 望江县| 武乡县| 沁源县| 奎屯市| 盐津县| 武城县| 克什克腾旗| 阿图什市| 合川市| 曲阜市| 治县。| 乌海市| 稻城县| 无为县| 榆中县| 周口市| 青神县| 济宁市| 大竹县|