判断继承关系需满足“子类 is a 父类”,Java中通过声明语法(extends)、isAssignableFrom(Class间)、instanceof(实例与类型)及IDE类层级视图综合验证。

判断两个类是否满足继承关系,核心是确认“子类 is a 父类”是否成立——比如 Dog is a Animal 成立,就说明 Dog 继承自 Animal。
看声明语法(静态判断)
在 Java 源码中,直接观察类定义:
- 若类 A 声明为
class A extends B { ... },则 A 是 B 的子类,B 是 A 的父类; - 若类 A 声明为
class A implements I { ... },则 A 实现接口 I,属于“实现关系”,不是继承(但isAssignableFrom和instanceof对接口也适用); - 所有类默认直接或间接继承
Object,哪怕没写extends Object。
用 isAssignableFrom 判断 Class 关系
当你已有两个 Class 对象(比如来自反射、泛型擦除或配置),用 superClass.isAssignableFrom(subClass):
-
Number.class.isAssignableFrom(Integer.class)→ true(Integer 是 Number 子类); -
String.class.isAssignableFrom(Object.class)→ false(反向不成立); -
List.class.isAssignableFrom(ArrayList.class)→ true(实现关系也支持); - 注意:参数不能为
null,基本类型(如int.class)不参与此类判断。
用 instanceof 判断运行时对象类型
当你有一个具体对象实例,想确认它“实际类型是否属于某类或其子类/实现类”:
-
new ArrayList() instanceof List→ true; -
new Dog() instanceof Animal→ true(假设 Dog extends Animal); -
null instanceof AnyClass→ 恒为 false,不会报错; - 右边必须是编译期已知的类或接口名,不能是变量或字符串。
借助开发工具快速查看
在主流 IDE 中可直观验证:
- Eclipse / IntelliJ:选中类名,按 Ctrl + H(Windows/Linux)或 Cmd + H(macOS),打开类层级结构视图;
- 该视图会展示完整的继承树,包括父类、接口实现、间接父类(如最终到
Object); - 适合快速验证复杂继承链或排查多层继承是否符合预期。


















