Java:自动投射如何工作?

时间:2018-05-10 07:21:10

标签: oop inheritance

来自一本书:

  

如果要调用由对象的子类定义的方法,该怎么办?   那是由超类的变量引用的?假设是SoftBall类   有一个名为riseBall的方法,它不是由Ball类定义的。你怎么   从Ball变量调用它?一种方法是创建子类的变量,然后使用赋值语句来转换对象:"

<iframe class="img-responsive" src="{{pdfLoc| trustThisUrl }}" ng-style="{
                height: iframeHeight * 0.75 + 'px'
            }" style="width:100%"></iframe>

我不明白这一点。为什么我不能直接从变量 b 调用该方法? (在这种情况下,变量 b 包含垒球对象)。为什么铸造?

1 个答案:

答案 0 :(得分:5)

  

如何从Ball变量中调用它?

你不能。编译器不知道此BallSoftBall而不是BaseBall

你必须明确地施放。这只是对编译器说的一种方式:&#34;我比你更了解这个实例的类型&#34;。编译器信任你(主要是:它不会让你把它投射到String),并让你处理后果(例如潜在的ClassCastException