好幾次都想起這個問題,每次想到都要腦子裡面就要思考一番
今天就做乙個小筆記
父類a,子類b
a a=new b();
①加入a是乙個介面或者抽象類,那麼不可以建立物件,用起引用去指向其他子類或實現類來建立物件是可以的
具體來說,假如乙個類需要實現各種水果,香蕉,蘋果等,有共同的方法eat()
就必須給每乙個類寫乙個方法
public void eat(banana banana)
.....
但是把方法寫成:
public void eat(fruit fruit)
只要是繼承了fruit 或者實現了fruit介面都可以作為這個eat方法的引數,大大簡化了程式設計
②a a = new b() ;
上面這位朋友的例子來說,
a是父類的引用,指向了乙個子類物件
好處是:
以後如果一旦發現該b物件無法適應 當前環境,可以轉換成父類中的其它物件。
即:a a=new c()這裡改了之後,其他的**不需做更改了
JAVA中的多型性
物件導向的特徵是封裝 繼承 多型,其中多型是指不同類的物件對同一訊息做出相應,即同一訊息可以根據傳送物件的不同而採用多種不同的行為方式。類的多型性表現在過載 重寫 物件的多型性上,過載與重寫在之前的博文中做過講解,這裡不再贅述,本文主要講解物件的多型性。物件的多型性指子類與父類的相互裝換,包含如下兩...
深入理解Java多型性
列印 分析 當超類物件引用變數引用子類物件時,被引用物件的型別而不是引用變數的型別決定了呼叫誰的成員方法,但是這個被呼叫的方法必須是在超類中定義過的,也就是說被子類覆蓋的方法.但是如果強制把超類轉換成子類的話,就可以呼叫子類中新新增而超類沒有的方法了.這裡涉及方法呼叫的優先順序問題,優先順序由高到低...
Java多型性 父類的引用指向子類的物件
lin 2018.5.7 animal a new dog 父類的引用指向子類的物件,此為多型性polymorphism。此物件a能呼叫父類的方法和子類重寫的方法,父類被重寫的方法被覆蓋了。不能呼叫子類新增的方法,除非強制轉化為子類的物件 dog a play animal a new dog a是...