假设有一个抽象类 `AbstractClass` 和一个继承自 `AbstractClass` 的具体类 `ConcreteClass`。`AbstractClass` 定义了一个抽象方法 `abstractMethod` 以及一个非抽象的默认方法 `defaultMethod`。`ConcreteClass` 实现了 `abstractMethod`。若创建一个 `ConcreteClass` 的实例并向上转型为 `AbstractClass` 引用,则通过该引用,哪些方法可以被调用?

答案解析

选项A错误:通过父类引用指向子类对象,可以调用父类中定义的所有public和protected方法,包括在子类中实现的方法。选项B错误:即使是抽象方法,在子类中实现后,通过父类引用也是可以调用的。选项C正确:通过父类引用可以调用父类中定义的public和protected的方法,包括子类实现或覆盖的方法。选项D错误:向上转型是Java中多态性的体现,可以安全地调用父类中定义的方法,前提是子类实现了这些抽象方法或覆盖了默认方法。即使是抽象方法,只要在子类中进行了实现,父类引用也可以进行调用。
正确答案:C
随机推荐
开始刷题