大家都知道JAVA中使用OBJECT作为唯一的基类。但是JAVA的设计者为什么要这样做呢?重读《TTHINKING IN JAVA》,得出以下原因:
1,JAVA是纯面向对象的语言。单继承体系保证了所有新建的或JDK中已有的类都必须继承自OBJECT。这样,保证了所有的类都具有一些基本的方法。例如一个String对象有toString()方法,另外一个Math对象也有这个方法,不需要为每个对象都去写一个这样的方法。
2,java中有个垃圾回收器机制,当一个对象不再被需要时,由垃圾回收器回收并销毁这个对象,释放它占用的内存空间。而单继承体系让垃圾回收器的实现变得简单多了。这缘于每个对象都具有从OBJECT继承而来的finalize
方法。
3,OBJECT中有个getClass()方法,得到对象的运行时类。这样就保证了每个JAVA对象都在运行时具有一个运行时类的信息。
4,有利于容器的复用。JAVA设计让容器可以存储OBJECT,这也就意味着可以存储其它任何类型。当然,涉及到容器存储,有个对象的向上转型和向下转型。具体过程是这样的:我们放入容器中的,其实是对象的引用,但是由于容器只存储OBJECT对象,所以所有的对象引用都要被向上转型为OBJECT,但是在从容器中取出对象的时候,所获取到的,其实是对一个OBJECT对象的引用,而不是放入的时候的那个类型的对象的引用,这时候,就必须用到向下转型。而向下转型是无法保证安全的,这里就用到了泛型的概念。这也是JDK5的新特性之一。
5,OBJECT提供了其它便利和常用的方法,如clone()。
暂时只想到这么多。
欢迎一起交流。
作者:
蒋珍波