1、不会实例化或者说实例化没有任何意义的父类可以变成抽象类,作为一个抽象的概念。
2、抽象类代表的是一个抽象的概念,提供一个继承的出发点,当设计一个抽象类时,一定是用来继承的,所以换个角度,具体类不是用来继承的。
3、类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象。所以设计中间键的时候类用抽象类,行为用接口。
4、ArrayList可以放置任何类型,因为接受的是Object,所以不是类型安全的。而且基本类型(int等)在add进去的时候会执行装箱操作,使用元素的时候会执行拆箱操作:
int i = 123;
Object o = (Object)i;装箱
o = 123;
int i = (int)o;拆箱
耗资源和时间。
C#2.0,java SE1.5开始引入泛型,来解决类型安全的问题。定死类型,就不能随便add任何类型了,从而保证ArrayList的类型安全。还有个优点,当元素是值类型,本来是有装箱操作的,现在就不需要了。
用了泛型集合类型的性能通常优于对应的非泛型集合类型,因为使用泛型不必对元素进行拆装箱。