[英]What's the semantical difference between the two statements?
我有两个(相当无用的) interfaces
与test1
扩展test
interface test
{
int a = 8;
void show();
}
interface test1 extends test
{
int a = 4;
void show();
}
我有一个实现test1
接口的类MyClass
(再次有点无用)
public class MyClass implements test1
{
public void show()
{
System.out.println(((test)this).a); // 1
System.out.println(test.a); // 2
}
public static void main(String ar[])
{
new MyClass().show();
}
}
在我提供的代码中,我有兴趣知道两个语句之间的语义差异 (如果有的话)分别为1.和2 . 因为结果明智,如果我错了,请纠正我,他们几乎是一样的。
因此,接口变量默认为public static final
。 ((test)this).a
和test.a
之间没有区别 ((test)this)
编译器期望参考类型的test
。 对于编译器来说这无关紧要。 例如
System.out.println(((test)null).a);
上面的行也可以工作,并为您提供适当的输出。
没有区别。 但是通过实例引用引用静态成员并不是一个好习惯。
将this
转换为父级以访问其静态字段实际上是误导性的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.