溫馨提示×

溫馨提示×

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

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

java中面向?qū)ο蟮亩鄳B(tài)介紹

發(fā)布時間:2020-06-22 10:36:06 來源:億速云 閱讀:131 作者:Leah 欄目:編程語言

這期內(nèi)容當中小編將會給大家?guī)碛嘘Pjava中面向?qū)ο蟮亩鄳B(tài)介紹,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

多態(tài)的簡單理解:

student類繼承了Person類,則student類的對象既是student又是person類

多態(tài)性具有兩種展現(xiàn)的形式:

1.方法的多態(tài)性:

(1)方法的重載:同一個方法可以根據(jù)傳入的參數(shù)的類型或者個數(shù)的不同實現(xiàn)不同的功能

(2)方法的覆寫:同一個方法可能根據(jù)實現(xiàn)子類的不同有不同的實現(xiàn)

2.對象的多態(tài)性:

父類與子類實例之間的轉換處理

(1)對象向上轉型:父類 父類實例 =new 子類實例();自動完成轉換

(2)對象向下轉型:子類 子類實例 =new (子類)父類實例();強制完成轉換

多態(tài)的最終體現(xiàn):

1.為父類引用變量可以指向子類對象

2.多態(tài)的前提是必須有子父類關系或者類實現(xiàn)接口關系,否則無法實現(xiàn)多態(tài)

3.在使用多態(tài)后的父類引用變量調(diào)用方法時,會調(diào)用子類重寫后的方法

多態(tài)的成員變量:

1.編譯的時候,參考父類中喲沒有這個變量,如果有就編譯成功,如果沒有就編譯失敗

2.運行的時候,運行的是父類中的變量值

成員變量編譯運行皆看父類

多態(tài)的成員方法:

1.編譯的時候,參考父類中有沒有這個方法,如果有就編譯成功,如果沒有就編譯失敗

2.運行的時候。運行的是子類的重寫方法

成員方法編譯看父類,運行看子類

對象的兩種轉型方式的理解:

1.對象向上轉型:

向上轉型之后,子類對象只能調(diào)用父類擁有的方法,不能調(diào)用子類獨自擁有的方法,通過向上轉型實現(xiàn)多態(tài)性的使用

2.對象向下轉型:

如果對象向上轉型之后想要使用子類獨有方法而父類沒有的方法,需要使用對象的向下轉型

代碼演示:

public   class Person {
	public  void Eat(){
		//在person類中定義一個吃的抽象方法
	}
}

public class Student extends Person{
	public  void Eat(){
		System.out.println("學生吃學校食堂");//重寫父類中的抽象方法
	}
	public void Learning()
	{
		System.out.println("學生在學習");//定義一個student類特有的方法
	}
}
public class Test {
	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		Person p=new Student();//通過向上轉型定義一個p對象
		p.Eat();//這是子父類共有的方法
		p.Learning();
	}
}

在這個代碼中我們通過向上轉型調(diào)用了一個子類特有的方法,但是會提示如下圖:

java中面向?qū)ο蟮亩鄳B(tài)介紹

父類中沒有定義Learning方法。但是我們又必須調(diào)用子類的特有的方法,此時就需要通過向下轉型來實現(xiàn)

補充代碼如下:

Student stu=(Student)p;//將p對象向下轉型實現(xiàn)方法調(diào)用
		stu.Learning();

以上就是java中面向?qū)ο蟮亩鄳B(tài)介紹,看完之后是否有所收獲呢?如果想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊,感謝各位的閱讀。

向AI問一下細節(jié)

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

AI