JAVA无法通过强制转换查找子类方法

时间:2013-10-27 19:08:15

标签: java inheritance casting subclass superclass

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

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

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();
}
}
}

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

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

.的优先级高于强制转型。因此,您需要另一组括号:

((B) a).methodX();

答案 1 :(得分:1)

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