【发布时间】:2014-03-04 05:53:04
【问题描述】:
这两种实例化类的新对象的方式有什么区别如下:
Test t1=new Test();
Test t2=new Test(){ };
当我尝试以下代码时,我可以看到两个对象都可以访问方法foo(),但是t2无法访问variable x(variable 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);
}
}
【问题讨论】:
-
我会说没有,除此之外,第二种方式让您有机会覆盖父类中的方法,而无需创建专门的子类
-
如果您通过将
t1.x+" "t2.x转换为t1.x+" "+t2.x使其可编译,则可以正常编译。 -
@Ankur Shanbhag 这是一个无效的编辑。
-
@AnkurShanbhag 只是分享。在我早期进行编辑时,我什至收到了 Mod 的警告;)
-
另外可以说第二种方法不是“实例化新对象的方式”。它特定于 Java,即您不能在
C#中执行此操作。
标签: java anonymous-inner-class