Java 什么';这两种说法在语义上的区别是什么?
我有两个(非常无用的)Java 什么';这两种说法在语义上的区别是什么?,java,interface,casting,static,this,Java,Interface,Casting,Static,This,我有两个(非常无用的)接口和test1扩展test interface test { int a = 8; void show(); } interface test1 extends test { int a = 4; void show(); } 我有一个类MyClass(同样有点无用)实现test1接口 public class MyClass implements test1 { public void show() {
接口
和test1
扩展test
interface test
{
int a = 8;
void show();
}
interface test1 extends test
{
int a = 4;
void show();
}
我有一个类MyClass
(同样有点无用)实现test1
接口
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.;因为就结果而言,如果我错了,请纠正我。它们几乎是一样的。没有区别。但是通过实例引用引用静态成员不是一个好的实践
将
此
强制转换到父级以访问其静态字段确实有误导性。因此,默认情况下,接口变量是公共静态最终
在((测试)this.)和测试之间没有区别。对于((测试)this)
编译器,应该使用测试的引用类型。对于编译器来说,这其实并不重要。比如说
System.out.println(((test)null).a);
上述行也可以工作,并为您提供适当的输出