Object 所有类的超类 (Java核心技术卷一 中的一段话)

Object类型的变量只能用于作为各种值的通用持有者。要想对其中的内容进行具体的操作,还需要清楚对象的原始类型,并进行相应的类型转换:

Employee e = (Employee)obj;

所有的数组类型,不管是对象数组还是基本类型的数组都扩展于Object类。

  1. 什么叫通用持有者? 这个完全不是很理解。 2.为什么说所有的数组类型都扩展于Object类。

1.通用持有者就是Object类型的变量,可以保存任何类型的值,但是,如果你要对值进行计算,比如:

Object abc = 1;
int def = 2;
要计算abc+def,就必须要知道abc是int类型的,并进行转换之后,才可以进行计算.

2.不止数组类型,Object在Java里面是所有类的根类.

简单说就是:
Object obj = new Employee ();
Object obj = new Stuff();
Object obj = new JSON();
object是所有类的基类,所有类都实现于object
例如你的Employee实现于EmployeeBase,但EmployeeBase是默认实现Object的

Object类是所有类的父类,所有变量都可以用Object去接收!

1.Object类型变量可以存储任意类型的值,但是无法对其进行该值多对应的类所有的操作,如

 Object o = new Integer(1); //将Integer类型对象赋值给Object类型对象,Object持有Integer类型的值1

o.compareTo(2);  //报错,因为Object类并没有compareTo()这一方法
((Integer)o).compareTo(2); //将o强制转换为Integer类型,可以使用Integer类型的方法

2.java中所有类都继承了Object类,Object类是所有类的超类

就是Object类是java继承这块的老祖宗,你自己写的类没申明extends都是默认继承Object。
看到你多次提到继承这块的问题,这些多态的问题需要自己写了代码后才能深入理解的。

人家这么规定的,所有类都是继承Object 追根溯源也是它,没什么好争辩的。

(1) 通用持有者,,

由于java是春面向对象语言,,,一切皆对象,所以所有对象(普通类的)都是Object

其次,面向对象设计原则之一(里氏代换原则,子类可以出现的地方,父类都可以),,所以Object可以出现在任何对象能够出现的地方
因此,说他是通用持有者。

(2). 所有的数组类型都扩展于Object类

由于java是春面向对象语言,,,一切皆对象,所以所有对象(普通类的)都是Object,,也包括数组

数组的类型比较怪异,,

 [I

有一个有趣的现象,,,java中开辟数组不想C语言,,,直接写 int[10] ,,,它是需要new 的,,

如果你想对Java这门语言有一个非常深入的理解的话,我建议你去看Thinking in Java一个外国大神写的

Object类是java中所有引用类型的父类,任意引用类型都直接或间接的继承Object类。
通用持久者就是任意类型的数据可以传递,哪怕是基本类型(会借助装箱和拆箱实现)