interface iMyInterface {
public iMethod1();
}
public class cMyClass implements iMyInterface{
public iMethod1() {
System.out.println("From Method1");
}
protected iMethod2() {
System.out.println("From Method2");
}
}
class AppMain
{
iMyInterface i=new cMyClass();
public static void main(){
i.iMethod1();
((cMyClass)i).iMethod2();
}
}
这产生如下输出
从方法1
从Method2
becoz接口对象被强制转换为该类
但我的问题是我无法在以下情况下进行投射
class AppMain
{
iMyInterface i=new cMyClass();
public static void main(){
i.iMethod1();
this.((cMyClass)i).iMethod2();
}
}
Eclipse IDE显示以下错误:
令牌“。”的语法错误,此令牌后应有标识符。
我不明白
无论哪种方式,我都访问相同的字段。
最佳答案
您只是在错误的位置进行投射。你要:
((cMyClass) this.i).iMethod2();
并不是说您的示例中有一个
this
可以在诸如main
的静态方法中引用...(还请注意,您的类型等均不遵循Java命名约定...)