我的作业存在这个问题,我似乎无法在互联网上找到解决方案。
我有一个超类及其子类。在一个不同的类中,我必须使用方法中的超类作为参数但是我需要子类中的方法,但是如果我强制转换超类,编译器无法找到它。 我的代码看起来像这样:
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();
}
}
}
我得到错误找不到符号,但是这是我必须按照老师告诉我们的方式构建我的类和方法的方式(必须是一个超类,一个带有方法的子类,以及一个方法)具有超类的给定参数的不同类。)
感谢您的帮助
答案 0 :(得分:2)
.
的优先级高于强制转型。因此,您需要另一组括号:
((B) a).methodX();
答案 1 :(得分:1)
你的演员是错的,它应该是((B) a).methodX()