【发布时间】:2020-07-05 15:14:40
【问题描述】:
我可以通过超类实例访问我的子类变量吗?
例如,我在 Main 中创建了我的超类对象,然后我想知道子类中变量的值。有可能这样做吗?谢谢。
【问题讨论】:
标签: java inheritance subclass superclass
我可以通过超类实例访问我的子类变量吗?
例如,我在 Main 中创建了我的超类对象,然后我想知道子类中变量的值。有可能这样做吗?谢谢。
【问题讨论】:
标签: java inheritance subclass superclass
不,这违反了继承原则。这就像询问上一代设备是否可以访问基于此的下一代设备中引入的新功能。
子类可以访问父类的非私有成员,反之则不行。这是没有意义的,因为语言语法不允许从父级访问子级,而相反的情况可以通过诸如 super 之类的方法和关键字来实现。
因此,最好重新考虑使用继承 abd 重构核心以满足要求的方式,因为这肯定行不通
【讨论】:
如果类 B 扩展类 A 并且你有一个 A 对象,那么你总是可以将它转换为它的子类,在这种情况下是 B。考虑以下几点:
A a = new A();
B b = (B)a;
之后,您始终可以通过 b 联系 B 成员。您也可以通过((B)a) 以内联方式执行此操作。
【讨论】: