国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

多態、向上轉型和向下轉型

iamyoung001 / 2003人閱讀

摘要:多態訪問成員變量的兩種方式直接通過對象名稱訪問成員變量看等號左邊是誰,優先用誰,沒有則向上找。只用于成員方法,不適用于成員變量。

多態性:

是對對象來說的。extends或implements是多態性的前提。

經理類繼承雇員類。小明是一個經理對象,這個對象既有經理形態,也有雇員形態。一個對象有多種形態,這就是對象的多態性。

多態性格式:父類引用指向子類對象

格式:父類名稱 對象名 = new 子類名稱();

或:接口名稱 對象名 = new 實現類名稱();

可以這樣理解:子類被當做父類來看待(一個經理被當做雇員來看待,一直貓被當做動物來看待)。而對象只能引用父類特有的方法。

多態訪問成員變量的兩種方式:

直接通過對象名稱訪問成員變量:看等號左邊是誰,優先用誰,沒有則向上找。(編譯看左邊,運行還看左邊)

Fu obj = new Zi();
System.out.println(obj.num);

間接通過成員方法訪問成員變量:看該方法屬于誰優先用誰,沒有則向上找。(先看右邊子類中有沒有該方法,沒有則向上找)

多態訪問成員方法:

訪問成員方法的規則:看new的是誰,則優先用誰,沒有則向上找(編譯看左邊,運行看右邊)。

先看左邊父類中有沒有該方法,沒有則編譯不通過報錯,但運行時是看右邊子類方法,沒有則向上找。只用于成員方法,不適用于成員變量。

向上轉型和向下轉型

在Java中,對象變量是多態的。

Employee e;
e = new Employee(...);
e = new Manager(...);//Manager繼承Employee

這里的Employee類變量可以引用Employee類對象和任何一個Employee類的子類。

在《JAVA核心技術卷一》P152的代碼中

Manager boss = new Manager(...);
Employee[] staff = new Employee[3];
staff[0] = boss;

Employee boss = new Employee(...);
Manager[] staff = new Manager[3];
staff[0] = boss;//錯誤!

boss是Manager類對象,staff數組是Employee類對象,所以staff可以和boss指向同一對象,且編譯器將staff[0]看成Employee對象。如果是下面這段代碼會報錯,因為不是所有的雇員都是經理(類比double轉換int可能會損失精度)。

向上轉型一定是安全的,從小范圍轉向了大范圍(從小范圍的經理轉向大范圍的雇員,從小范圍的貓轉向大范圍的動物,類似于從小范圍的int轉向大范圍的double不會損失精度)。
對象的向上轉型其實就是多態寫法:

//格式:父類名稱  對象名  =  new  子類名稱();
//右邊創建了一個子類對象,把它當做父類看待使用
Employee  Manager  =  new  Manager()
//創建了一個經理對象,把它當做雇員來看待

向下轉型是一個【還原】的動作,但要保證對象一開始創建的時候 ,就是經理,才能由雇員向下轉型為經理。(用instanceof關鍵字判斷前面的對象是不是后面的類型)

String c = (String)staff[1];
//會產生編譯錯誤,因為String不是Employee的子類

只能在繼承層次內進行類型轉換

將超類轉換成子類(向下轉型)之前,應該使用instanceof進行檢查

類型轉換不是一種好的做法,多態的對象向下轉型是為了使用子類特有的方法,這種情況下應該檢查超類的設計是否合理,也許重新設計超類并添加相應方法才是正確做法。盡量少用類型轉換和instanceof

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75233.html

相關文章

  • 1、接口 2、多態

    摘要:接口的概念接口的概念接口是功能的集合,同樣可看做是一種數據類型,是比抽象類更為抽象的類。多態的前提是必須有子父類關系或者類實現接口關系,否則無法完成多態。 01接口的概念 * A:接口的概念 接口是功能的集合,同樣可看做是一種數據類型,是比抽象類更為抽象的類。 接口只描述所應該具備的方法,并沒有具體實現,具體的實現由接口的實現類(相當于接口的子類)來完成。這樣將功能的定...

    Magicer 評論0 收藏0
  • 多態

    摘要:父類型引用指向子類型對象多態以下程序編譯是沒有問題的,因為編譯器檢查到的數據類型是和之間存在繼承關系,并且是父類型,是子類型,父類型轉換成子類型叫做向下轉型,語法合格。 package duotai;public class Animal { public void move() { System.out.pr...

    Magicer 評論0 收藏0
  • 面向對象接口多態

    摘要:多態的前提是必須有子父類關系或者類實現接口關系,否則無法完成多態。具體格式如下父類引用指向子類對象就是多態的定義格式。多態的轉型分為向上轉型與向下轉型兩種向上轉型當有子類對象賦值給一個父類引用時,便是向上轉型,多態本身就是向上轉型的過程。 第3天 面向對象 今日內容介紹? 接口? 多態? 筆記本案例今日學習目標? 寫出定義接口的格式? 寫出實現接口的格式?...

    wangdai 評論0 收藏0
  • 9. java 多態

    摘要:概念所謂多態,就是指一個引用變量類型在不同的情況下的多種狀態。需進行強制轉換有風險,最好使用進行判斷。繼承在多態中必須存在有繼承關系的子類和父類。在中有兩種形式可以實現多態繼承和接口。 概念 所謂多態,就是指一個引用變量(類型)在不同的情況下的多種狀態。也可以理解為,多態是指通過指向父類的指針,來調用在不同子類中實現的方法。多態性是對象多種表現形式的體現 多態性嚴格來說有兩種描述形式:...

    wanglu1209 評論0 收藏0
  • Java面向對象及其三大特征

    摘要:面向對象編程思想面向對象,簡單來說就是由動作的執行者變為動作的操控者。面向對象是相對于面向過程的。面向對象三大特征面向對象有三大特征,即封裝繼承和多態。接口和抽象類接口接口名方法方法,默認修飾符為,不能用其他修飾符修飾接口。 面向對象編程思想 面向對象,簡單來說就是由動作的執行者變為動作的操控者。結合具體例子來說就是使用某個人或者工具所具有的功能而不用去管功能的具體實現方式。例如現實中...

    William_Sang 評論0 收藏0

發表評論

0條評論

iamyoung001

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<