new Test()和new Test(){}之间的区别

这两种实例化类的新对象的方式之间有什么区别,如下所示:

Test t1=new Test();

Test t2=new Test(){ };

当我尝试以下代码时,我可以看到两个对象都可以访问方法foo(),但是t2无法访问variable xvariable x无法解析):

public class Test

{

int x=0;

public void foo(){ }

public static void main (String args[])

{

Test t1=new Test();

Test t2=new Test(){ };

t1.x=10;

t2.x=20;

t1.foo();

t2.foo();

System.out.println(t1.x+" "t2.x);

}

}

回答:

Test t2=new Test(); 将创建Test类的对象。

但是Test t2=new Test(){ };将创建一个测试子类的对象(在这种情况下,即匿名内部类)。

您可以在那提供任何方法的实现

Test t2=new Test(){ 

public void foo(){ System.out.println("This is foo");}

};

这样,当foo()从对象调用方法时t2,它将打印出来This is foo

代码中的编译时错误是由于缺少条件运算符

System.out.println(t1.x+" "+t2.x);

###

以上是 new Test()和new Test(){}之间的区别 的全部内容, 来源链接: utcz.com/qa/425350.html

回到顶部