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();
}
}
这产生如下输出
来自Method1
来自Method2
becoz接口对象被转换为该类
但我的问题是我不能在下面的案例中施展
class AppMain
{
iMyInterface i=new cMyClass();
public static void main(){
i.iMethod1();
this.((cMyClass)i).iMethod2();
}
}
Eclipse IDE显示以下错误: 令牌“。”上的语法错误,此令牌后预期的标识符。
我不明白这一点 在任何一种方式我访问相同的领域。
答案 0 :(得分:4)
你只是在错误的点上投掷。你想要:
((cMyClass) this.i).iMethod2();
并非您 this
在您的示例中使用main
这样的静态方法来引用...
(另请注意,您的类型等都不遵循Java命名约定......)
答案 1 :(得分:1)
尝试
((cMyClass)(this.i)).iMethod2();
您看,您的this
中没有(cMyClass)i
,只有i
。所以你得到i
(this.i
)并将其投射到任何你想要的地方。