2 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
假設(shè)你有:
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 您可以訪問(wèn)這兩種a(), b()方法。
那么有什么好處A a = new B()呢?
假設(shè)您有類(lèi) B、C、D、E,并且它們都擴(kuò)展了類(lèi) A 或?qū)崿F(xiàn)了接口 A?,F(xiàn)在您可以A a = new B(); A a = new C(); A a = new D()在運(yùn)行時(shí)檢查類(lèi)型,然后將對(duì)象轉(zhuǎn)換為特定的類(lèi)類(lèi)型,因此您無(wú)需聲明每種類(lèi)型有 3 個(gè)變量。所有 A 類(lèi)型變量都有一個(gè)容器(變量),它也是子(B、C、D)。

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
我們以 Java Collections API 為例。為簡(jiǎn)潔起見(jiàn),請(qǐng)考慮以下層次結(jié)構(gòu):
Collection -> ArrayList
現(xiàn)在,這些陳述是有效的:
的實(shí)例
Collection
可以使用該方法isEmpty()
。的實(shí)例
ArrayList
可以使用方法isEmpty()
和add()
。
現(xiàn)在這取決于您想對(duì)實(shí)例做什么。如果您需要添加新元素,請(qǐng)使用允許它的實(shí)現(xiàn)。如果沒(méi)有,最好使用您真正需要的最小實(shí)現(xiàn)或?qū)ο蟆?/p>
示例:如果您需要從 DAO 返回的 List 的大小,請(qǐng)使用Collection
替代List
或其任何實(shí)現(xiàn):
Collection collection = dao.getListFromDatabase();
int size = collection.size();
添加回答
舉報(bào)