您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關java中面向對象的多態介紹,以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
多態的簡單理解:
student類繼承了Person類,則student類的對象既是student又是person類
多態性具有兩種展現的形式:
1.方法的多態性:
(1)方法的重載:同一個方法可以根據傳入的參數的類型或者個數的不同實現不同的功能
(2)方法的覆寫:同一個方法可能根據實現子類的不同有不同的實現
2.對象的多態性:
父類與子類實例之間的轉換處理
(1)對象向上轉型:父類 父類實例 =new 子類實例();自動完成轉換
(2)對象向下轉型:子類 子類實例 =new (子類)父類實例();強制完成轉換
多態的最終體現:
1.為父類引用變量可以指向子類對象
2.多態的前提是必須有子父類關系或者類實現接口關系,否則無法實現多態
3.在使用多態后的父類引用變量調用方法時,會調用子類重寫后的方法
多態的成員變量:
1.編譯的時候,參考父類中喲沒有這個變量,如果有就編譯成功,如果沒有就編譯失敗
2.運行的時候,運行的是父類中的變量值
成員變量編譯運行皆看父類
多態的成員方法:
1.編譯的時候,參考父類中有沒有這個方法,如果有就編譯成功,如果沒有就編譯失敗
2.運行的時候。運行的是子類的重寫方法
成員方法編譯看父類,運行看子類
對象的兩種轉型方式的理解:
1.對象向上轉型:
向上轉型之后,子類對象只能調用父類擁有的方法,不能調用子類獨自擁有的方法,通過向上轉型實現多態性的使用
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(); } }
在這個代碼中我們通過向上轉型調用了一個子類特有的方法,但是會提示如下圖:
父類中沒有定義Learning方法。但是我們又必須調用子類的特有的方法,此時就需要通過向下轉型來實現
補充代碼如下:
Student stu=(Student)p;//將p對象向下轉型實現方法調用 stu.Learning();
以上就是java中面向對象的多態介紹,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎關注億速云行業資訊,感謝各位的閱讀。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。