Object类不是密封类,也不参与sealed机制:不能被声明为sealed,不能出现在permits列表中,其隐式继承关系与密封性正交无关;密封性仅约束显式声明的sealed类及其允许的子类。

Object 类本身不是密封类,也不参与 sealed 机制的约束体系。它在 Java 17 的密封类设计中不承担任何特殊角色或限制作用——既不能被声明为 sealed,也不能作为 permits 列表中的父类,更不会影响密封继承链的校验。
Java 中所有类默认隐式继承 Object,但这个继承关系与密封机制正交且互不干涉。密封性只作用于你显式声明为 sealed 的类或接口,而 Object 是语言底层根类,不具备、也不需要 sealed 语义。
真正起约束作用的是你自定义的密封类,例如:
public sealed abstract class OrderStatus permits PendingStatus, ShippedStatus, CancelledStatus { ... }此时编译器检查的是:
立即学习“Java免费学习笔记(深入)”;
-
OrderStatus是否正确声明了permits -
PendingStatus等子类是否真实存在、同包/同模块 - 每个子类是否明确标注
final/sealed/non-sealed
而 OrderStatus extends Object 这一事实完全透明,无需声明,也不受 sealed 规则约束。
所以,关于 Object 和密封类的关系,关键点很明确:
-
Object不能加sealed修饰符(语法错误) - 不能在
permits中写Object(类型不匹配,编译失败) - 所有密封类自动继承
Object,但这不影响其密封性校验逻辑 -
instanceof Object对任何对象都为true,和密封与否无关
换句话说:
密封规则只管“谁可以继承你”,不管“你继承了谁”。Object 是所有类的起点,但不是密封体系的参与者或控制点。


















