50 多型,為什麼總是要用父類引用指向子類物件?

2022-02-20 17:08:43 字數 819 閱讀 8268

多型三要素:

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。如果兩個人要去看對方的程式,那麼這個方法要讀懂是不是要有乙個過程?如果在公...