Java中所有类默认继承Object,子类对象可自动向上转型为Object类型变量,无需强制转换,体现多态基础;集合可统一存储不同子类对象,方法可接收任意Object参数,但仅能调用Object方法,调用子类特有方法需instanceof判断后向下转型。

Java 中所有类都默认继承自 Object 类,因此任意子类对象天然就是 Object 的实例。这种“向上转型”无需显式强制转换,编译器自动完成,是多态最基础、最直接的体现。
子类对象可直接赋值给 Object 类型变量
由于继承关系的存在,JVM 允许将子类引用隐式转为父类(Object)引用:
-
合法且无警告:
Object obj = new String("hello"); -
同样合法:
Object obj = new ArrayList<>();、Object obj = new Person(); - 底层本质是**引用类型的安全提升**,不改变对象实际类型,只改变编译期视图
集合容器统一存储不同子类对象
利用泛型擦除与 Object 根类特性,Collection 等原始类型集合天然支持混存:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
List<Object> list = new ArrayList<>();-
list.add("abc");→String是Object -
list.add(123);→ 自动装箱为Integer,仍是Object -
list.add(new Date());→Date继承自Object
方法参数接收任意对象,体现多态统一性
定义接受 Object 参数的方法,即可传入任意子类实例:
立即学习“Java免费学习笔记(深入)”;
public void process(Object data) { ... }- 调用时:
process("text");、process(new HashMap<>());、process(42L);均合法 - 方法体内可通过
instanceof或getClass()进行运行时类型识别和安全向下转型
注意:这只是引用多态,不是对象转换
把子类对象赋给 Object 变量,并不会修改对象本身:
- 对象在堆中类型不变,
obj.getClass()仍返回真实子类 - 只能通过
Object定义的方法(如toString()、equals()、hashCode())访问 - 若需调用子类特有方法,必须先用
instanceof判断再强制转型

















