java子类能使用父类的变量吗_java – 为什么我不能将父类分配给子类类型的变量?...

为什么子类的引用变量不能指向父对象?即

Child obj = new Parent();

但是我们可以反之亦然

请回答内存视图(堆)

解决方法:

没有理由与记忆有关.它更简单.子类可以通过添加新方法来扩展其超类的行为.虽然没有给出,但超类具有其子类的所有方法.请看以下示例:

public class Parent {

public void parentMethod() {}

}

public class Child extends Parent {

public void childMethod() {}

}

现在让我们考虑如果您可以将Parent的实例分配给Child类型的变量会发生什么.

Child c = new Parent(); //compiler error

由于c是Child类型,因此允许调用方法childMethod().但由于它实际上是一个没有此方法的Parent实例,因此会导致编译器或运行时问题(取决于检查何时完成).

反过来没有问题,因为你无法通过扩展类来删除方法.

Parent p = new Child(); //allowed

Child是Parent的子类,因此继承parentMethod().所以你可以节省地调用这个方法.

标签:java,oop,run-time-polymorphism

来源: https://codeday.me/bug/20191003/1850405.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值