1、不會實例化或者說實例化沒有任何意義的父類可以變成抽象類,作為一個抽象的概念。
2、抽象類代表的是一個抽象的概念,提供一個繼承的出發(fā)點,當設計一個抽象類時,一定是用來繼承的,所以換個角度,具體類不是用來繼承的。
3、類是對對象的抽象;抽象類是對類的抽象;接口是對行為的抽象。所以設計中間鍵的時候類用抽象類,行為用接口。
4、ArrayList可以放置任何類型,因為接受的是Object,所以不是類型安全的。而且基本類型(int等)在add進去的時候會執(zhí)行裝箱操作,使用元素的時候會執(zhí)行拆箱操作:
int i = 123;
Object o = (Object)i;裝箱
o = 123;
int i = (int)o;拆箱
耗資源和時間。
C#2.0,java SE1.5開始引入泛型,來解決類型安全的問題。定死類型,就不能隨便add任何類型了,從而保證ArrayList的類型安全。還有個優(yōu)點,當元素是值類型,本來是有裝箱操作的,現(xiàn)在就不需要了。
用了泛型集合類型的性能通常優(yōu)于對應的非泛型集合類型,因為使用泛型不必對元素進行拆裝箱。