You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过父类类型引用访问子类特有的成员变量?

访问父类引用中子类特有的成员变量

先看你的代码场景:

private class A{}
private class B extends A{int x = 5;}

// 父类类型引用指向子类实例
A instB = new B();

要访问B类特有的x变量,核心是向下强制类型转换——因为编译器只知道instB是A类型,不知道它实际是B的实例,必须告诉编译器它的真实类型,才能访问子类特有的成员。

直接转换访问

可以直接把引用强制转为B类型后访问:

// 单次访问的简洁写法
System.out.println(((B) instB).x);

// 多次使用的话,先转为B类型变量更方便
B bObj = (B) instB;
bObj.x = 10; // 实际场景中修改可变的x
System.out.println(bObj.x);

安全转换(避免异常)

如果不确定instB是否真的是B的实例,建议先做类型检查,防止抛出ClassCastException:

if (instB instanceof B) {
    B bObj = (B) instB;
    bObj.x = 15;
    System.out.println(bObj.x);
}

本质逻辑:父类引用只能识别父类定义或继承的成员,子类独有的成员必须通过向下转型,让编译器识别到实例的真实子类类型后才能访问。

内容的提问来源于stack exchange,提问作者BlockManBlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:07:04