我有以下的hirarchy:
Interface s
Abstractclass1 implements s
Abstractclass2 extends Abstractclass1
Abstractclass2
中的 s
/ Abstractclass1
中有一种无法识别的方法:method2
有一个测试代码生成一个新的s
对象,我想在这个对象上使用method2
如何访问它?
答案 0 :(得分:4)
您不能在具有静态类型method2
(或Abstractclass1
)的对象上调用s
。
如果您有bark()
(谁知道,在运行时可能是Animal
),则无法致电Cat
那么,该怎么办?您可以将静态类型更改为Abstractclass2
,也可以执行向下转换,例如:((Abstractclass2) yourObject).method2
。
答案 1 :(得分:0)
你必须对你的" S"的实例进行类型转换。到Abstractclass2。
e.g。
void myMethod(S myparam)
{
if (myparam instanceof Abstractclass2)
{
((Abstractclass2)myparam).method2();
}
}