答:
抽象類和接口比起來(lái),有一個(gè)好處,就是某些函數(shù)可以實(shí)現(xiàn)具體的方法,而并不一定是聲明抽象的方法,而接口只能聲明抽象方法,所以用一個(gè)抽象類來(lái)實(shí)現(xiàn)某個(gè)接口可以實(shí)現(xiàn)一些通用的方法,而這些具體實(shí)現(xiàn)的方法里還可以調(diào)用抽象方法,所以減少了子類中的重復(fù)代碼。
java庫(kù)里也有不少這這樣的設(shè)計(jì),
比如java.util.AbstractList實(shí)現(xiàn)了java.util.List,而其實(shí)某些方法就是調(diào)用了抽象方法。
還有一個(gè)好處就是可以給子類一個(gè)默認(rèn)的實(shí)現(xiàn),而不必給所有的子類實(shí)現(xiàn)所有的方法。
另外還有一個(gè)好處就是可以提供一些公用的方法給子類使用。
2.