我知道,在處理Java中的多態性時,可以爲對象指定與對象類型不同的聲明類型。例如:Java中具有不同引用類型的對象類型的優點是什麼?
Parent foo = new Child();
我主要是看到它時聲明的類型是一個接口,如:
Map<Integer,BigInteger> memo = new TreeMap<Integer,BigInteger>();
我這看到了很多在人們的Java代碼。當它是一個Child對象時,將foo聲明爲Parent有什麼好處?我也明白,如果我們這樣做,foo不能再調用任何未在Parent中聲明爲抽象或定義的方法。令我感到困惑的是,當我們可以同時擁有聲明和實際類型的Child並且仍然將其作爲參數傳遞給需要Parent參數對象的方法時,我看到了這一點。例如:
Child fooNew = new Child();
public void showObj(Parent o){
System.out.println(o); }
showObj(fooNew);
那麼是什麼給?在什麼情況下爲對象設定不同的聲明和實際類型會有好處?我的書說它對泛型編程很重要,但沒有解釋。我看到它始終如一地使用,但毫無頭緒。它甚至似乎有其自身的一些缺點。
從Oracle瞭解孩子:http://docs.oracle.com/javase /tutorial/java/generics/why.html – 2014-10-01 04:37:29
@ScaryWombat原理是一樣的。 – ajb 2014-10-01 04:37:50
當父母有多個孩子覆蓋一個或多個父母方法時,這是有意義的。您可以將不同子項的實例放入由父類型定義的某些集合中,並且在調用重寫方法時,JVM將爲每個子實例適當地調用此方法。 – 2014-10-01 04:38:45