2 回答

TA貢獻1891條經驗 獲得超3個贊
假設你有:
public class A {
public void a(){
}
}
public class B extends A{
public void b(){
}
}
你不能使用 B b = new A();
您可以使用A a = new A();Here you have access toa()方法。
您可以使用A a = new B();Here you have access toa()方法。
您可以使用B b = new B();Here 您可以訪問這兩種a(), b()方法。
那么有什么好處A a = new B()呢?
假設您有類 B、C、D、E,并且它們都擴展了類 A 或實現了接口 A。現在您可以A a = new B(); A a = new C(); A a = new D()在運行時檢查類型,然后將對象轉換為特定的類類型,因此您無需聲明每種類型有 3 個變量。所有 A 類型變量都有一個容器(變量),它也是子(B、C、D)。

TA貢獻1887條經驗 獲得超5個贊
我們以 Java Collections API 為例。為簡潔起見,請考慮以下層次結構:
Collection -> ArrayList
現在,這些陳述是有效的:
的實例
Collection
可以使用該方法isEmpty()
。的實例
ArrayList
可以使用方法isEmpty()
和add()
。
現在這取決于您想對實例做什么。如果您需要添加新元素,請使用允許它的實現。如果沒有,最好使用您真正需要的最小實現或對象。
示例:如果您需要從 DAO 返回的 List 的大小,請使用Collection
替代List
或其任何實現:
Collection collection = dao.getListFromDatabase();
int size = collection.size();
添加回答
舉報