Object类是Java所有类的隐式父类,提供toString()、equals()等统一方法,支撑多态、泛型擦除、反射、序列化及框架通用能力,是Java类型系统的基石。

Object 类是 Java 类体系的起点,所有类——无论是你写的 Student、Order,还是 String、ArrayList,甚至数组和枚举——都自动继承它。编译器会在背后悄悄加上 extends Object,你不用写,但效果始终存在。
所有对象天然具备统一行为契约
正因为这个隐式继承,每个对象都能调用 toString()、equals()、hashCode()、wait()、notify() 等方法。这不是语法糖,而是语言设计的底层约定:只要是个引用类型,就一定支持这些基础操作。
- 你可以把任意对象赋给
Object类型变量:Object obj = new Date();、Object obj = new int[]{1,2}; - 集合如
ArrayList内部存储的其实是Object[],靠这个统一类型实现泛型擦除前的通用容器能力 - 反射、序列化、JVM GC 等机制都依赖 Object 提供的通用接口(比如
getClass()返回运行时类型信息)
它是多态与类型转换的基石
向上转型无需强制转换,因为子类“本来就是” Object;向下转型则必须显式且安全校验(如用 instanceof)。这种父子关系让 Object 成为类型系统的锚点:
-
String s = "hello"; Object o = s;—— 自然成立 -
Object o = new HashMap(); Map m = (Map) o;—— 需要类型检查,否则可能抛ClassCastException - 接口类型也继承自 Object,所以
List list = new ArrayList(); Object o = list;合法
框架和工具链默认围绕它构建
Spring 的 Bean 容器、Jackson 的 JSON 序列化、JUnit 的断言、IDE 的变量预览……它们不关心你用的是什么具体类,只认准“这是个 Object”,再通过反射或重写的方法(如 toString())获取信息。没这个统一父类,这些通用能力就无从谈起。
立即学习“Java免费学习笔记(深入)”;
- 日志打印
log.info(user),实际调用的是user.toString() -
HashMap.put(key, value)内部依赖key.hashCode()和key.equals()判断重复 - Lombok 的
@Data、@ToString本质就是在帮你自动重写 Object 的方法
它不是用来被实例化的抽象类,而是一套强制落地的最小公共协议。理解它,等于看清了 Java 类型系统怎么“连成一张网”。


















