多型三要素:
1.繼承 2.重寫父類方法 3.父類引用指向子類物件
**:
package _20191211;/** * 多型
* @author tedu
* */
public class polymorphictest
}class animal
}class dog extends animal
}class cat extends animal
}
結果:
叫~汪汪汪~
喵喵喵~
我們經常看到:listlist = new arraylist<>();
那麼為什麼總是這麼寫呢?為什麼不用arraylistlist = new arraylist<>();呢?
因為list介面下面除了arraylist,還有vector及其它子類,通常情況下,list下的方法及屬性已經能滿足需要了。如果使用後面這種方法,當我們需要將arraylist改為vector時,需要改動的地方就太多了。
比如://返回乙個list
public list getlist(){
arralist list = new arraylist();
後期我們需要改資料結構,改成vector,那麼只需將方法體中的**改為
vector v = new vector();
return v;
即可,無需修改整個方法,尤其當返回的list引用被大量使用時,只需要改返回該list引用的方法中的內容就可以,不需要改list本身。
這種思想叫做面向介面程式設計。
為什麼要用父類引用子類的例項
class a class b extends a a a new b b類繼承a類,那麼a a new b 比 b b new b 的好處在 b b new b b可以呼叫 1 a類的沒有被子類覆蓋的方法 2 a類被子類覆蓋的方法 3 b類特有的方法 而a a new b 只可以呼叫 1和2,那麼...
拷貝建構函式為什麼要用引用?
一 引用 1.概念 引用不是新定義乙個變數,而是給已經存在的變數取了個別名,編譯器不會為引用開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間。2.和指標區別 引用在定義時必須初始化,指標沒有要求 引用在初始化時引用乙個實體後,就不能再引用其他實體,而指標可以在任何時候指向任何乙個同型別實體 沒有...
為什麼要用抽象類Abstract
這個問題我一直沒有在意,但是知其然最好知其所以然。我想用比較通俗的方法告訴你 假如有兩個程式設計師,兩個在兩個程式裡都要用到一種功能,比如要取乙個物件名。甲自己做了乙個方法叫getname,乙也作了乙個方法叫qumingzi。如果兩個人要去看對方的程式,那麼這個方法要讀懂是不是要有乙個過程?如果在公...