0

我的作业有这个问题,我似乎无法在互联网上找到解决方案。

我有一个超类和它的子类。在另一个类中,我必须在方法中使用超类作为参数,但是我需要子类中的方法,但是如果我强制转换超类,编译器将找不到它。我的代码看起来像这样:

public class A{...}

public class B extends A{
...
public boolean methodX(){...}
}

public class DifferentClass{

public void methodY(A a){
if(a instanceof B){
(B)a.methodX();
}
}
}

我得到错误找不到符号,但是这是我必须按照老师告诉我们的那样构建我的类和方法的方式(必须是一个超类,一个包含方法的子类,以及另一个类中的方法超类的给定参数)。

谢谢您的帮助

4

2 回答 2

2

.比强制转换具有更高的优先级。因此,您需要另一组括号:

((B) a).methodX();
于 2013-10-27T19:10:10.960 回答
1

你的演员表错了,应该是((B) a).methodX()

于 2013-10-27T19:09:20.143 回答