gpt4 book ai didi

Java:从父类(super class)变量调用子类方法

转载 作者:行者123 更新时间:2023-12-01 16:46:08 25 4
gpt4 key购买 nike

(之前提出的问题 here 。我没有完全得到想要的答案。)

引述一本书:

What if you want to call a method that’s defined by a subclass from an object that’s referenced by a variable of the superclass? Suppose that the SoftBall class has a method named riseBall that isn’t defined by the Ball class. How can you call it from a Ball variable? One way to do that is to create a variable of the sub- class and then use an assignment statement to cast the object:

Ball b = new SoftBall();
SoftBall s = (SoftBall)b;
// cast the Ball to a
// SoftBall
s.riseBall();

在上面的代码片段中,它显示了一个新的 Softball 对象被创建并分配为变量 b 的引用,这是完全合法的,因为类 >垒球类的子类。然而,引用(间接)指出,您必须先将变量转换为“Softball”类型,然后才能使用该变量调用“Softball”类中的方法。这是为什么?为什么我不能直接使用Ball类型的变量b(其中包含对垒球对象的引用)来调用所需的方法?变量b已经拥有该对象。

(注意:我已经阅读了 this 帖子。)

最佳答案

Java 是一种静态类型语言。

这意味着编译器会检查变量的类型是否具有您尝试调用的方法。

变量b的类型是BallBall 没有 riseBall 方法。

这意味着您的代码将会崩溃,除非 b 在运行时恰好包含 垒球(编译器无法保证)。您可能知道它确实如此,但您也必须说服编译器(即为您的变量提供必要的类型)。

关于Java:从父类(super class)变量调用子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50268992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com