JAVA-初步認識-第十章-多態-成員變量
阿新 • • 發佈:2017-11-13
不存在 之前 只有一個 寫法 父類引用 講解 ima ont 覆蓋
一.
下面講述多態出現以後,繼承體系中所涉及的成員的一些特點。
想要討論多態,沒有繼承是不行的。
不寫構造函數,是因為構造函數是固定在靜態中,是子類的實現過程?
成員函數是非靜態的。
接下來就對這個三個進行介紹。
接下來的講解中,只介紹特殊情況,非特殊情況沒有特點。
只要一說多態,就出現父類引用指向子類對象。
二. 成員變量
這運行的結果是3,之前我一直在猶豫到底是3還是4?有一點是毋庸置疑的,就是肯定只有一個子類對象,但是父類中的一些數據是附著在子類對象中的,就像這裏的父類的int num=3,這個成員變量也是存在於子類對象中。一定要牢記,所有的所有都有前提,這裏的前提就是繼承,從第一句開始,就是子類開始繼承父類,一切和父類相關的東西都開始附著於子類中。
Fu f=new Zi(); 這裏是子類對象強制提升為父類,那麽接下來的輸出f.num,輸出的當然是父類的num。
覆蓋只發生在函數上,和成員變量沒關系,所以不存在4覆蓋3。
如果父類中沒有num,那麽會有輸出麽?沒有,因為雖然本質是子類對象,子類對象中也有num,但是那是子類對象的num,這裏是在調用父類的num。DOS會直接報錯。
貓有九條命,但是貓變成動物之後,動物有九條命麽?沒有的,動物是為了擴展,泛指很多種類的,不存在九條命這一說法。
如果換一種寫法,需要小心。這裏子類中雖然沒有num,但是由於繼承的關系,它裏面就有了父類的num。但是這裏講述的是多態,所以這個寫法僅作了解。
為什麽這個成員變量這一塊是作為了解呢?就是因為實際中使用是不一樣的,不會出現子父類中都有num,不合適。
開發的時候,父類都有這個屬性,子類幹嘛還要重新設定,直接繼承過來就可以的。只有面試的時候才會使用。
JAVA-初步認識-第十章-多態-成員變量