Object类是所有类的默认父类,构成多态的统一基座;所有对象可自动向上转型为Object,调用toString()、equals()等方法时动态绑定子类实现,集合底层依赖此机制实现泛型擦除后的多态行为。

Java 中 Object 类与多态的关系,是面试中常被忽略但极具区分度的考点。回答时要抓住两个核心:Object 是所有类的默认父类,以及多态在 Object 引用上的自然体现。
Object 类本身就是多态的“基础设施”
每个类(哪怕没显式继承)都隐式继承自 java.lang.Object。这意味着:
- 所有对象都能赋值给 Object 类型变量;
- 所有对象都能作为参数传入接收 Object 的方法;
- 集合(如 ArrayList)底层存储的就是 Object[],靠多态承载任意子类型。
典型多态场景:equals() 和 toString() 方法调用
这两个方法定义在 Object 中,但实际执行的是子类重写后的行为 —— 这正是“编译看左边(Object),运行看右边(实际类型)”的典型体现:
-
String s = "hello"; Object o = s;→ 调用o.toString()输出"hello",不是Object.toString()的默认格式 -
new ArrayList<>().add("a");→ 底层存的是Object引用,但get(0).equals("a")走的是String.equals()
面试答题关键点(简洁有力)
- Object 类让多态“无处不在”:不需要显式继承,任何对象天然支持向上转型为 Object
- 多态性体现在对 Object 中通用方法(
toString()、equals()、hashCode())的动态分派 - 集合框架(List/Map/Set)和泛型擦除后的运行时行为,本质都依赖 Object 多态支撑
- 注意:属性不具多态性 ——
Object o = new String("x");不能访问o.length(),因为编译时只认 Object 声明的成员
一句话收尾(适合面试结尾)
Object 类不是多态的“特例”,而是多态得以落地的统一基座 —— 它让 Java 不需要额外语法,就能天然支持“一个接口,多种实现”。


















