您好,登錄后才能下訂單哦!
這期內(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)用了一個子類特有的方法,但是會提示如下圖:
父類中沒有定義Learning方法。但是我們又必須調(diào)用子類的特有的方法,此時就需要通過向下轉型來實現(xiàn)
補充代碼如下:
Student stu=(Student)p;//將p對象向下轉型實現(xiàn)方法調(diào)用 stu.Learning();
以上就是java中面向?qū)ο蟮亩鄳B(tài)介紹,看完之后是否有所收獲呢?如果想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊,感謝各位的閱讀。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。