class C
{
int c;
C(int a)
{
c=0;
for(int i=0;i<=a;i++)
c+=i;
}
C(C b)
{c=b.c;}
}
class Exam3_3
{
public static void main(String args[])
{
C c1=new C(6);
C c2=new C(new C(4));
System.out.println("c1:"+c1.c);
System.out.println("c2:"+c2.c);
}
}结果:
c1:21
c2:10
能告诉我 C c2=new C(new C(4)); 是如何通过创建对象调用函数的吗?这个语句的调用我看不懂呢?高手帮帮忙啊!!
{
int c;
C(int a)
{
c=0;
for(int i=0;i<=a;i++)
c+=i;
}
C(C b)
{c=b.c;}
}
class Exam3_3
{
public static void main(String args[])
{
C c1=new C(6);
C c2=new C(new C(4));
System.out.println("c1:"+c1.c);
System.out.println("c2:"+c2.c);
}
}结果:
c1:21
c2:10
能告诉我 C c2=new C(new C(4)); 是如何通过创建对象调用函数的吗?这个语句的调用我看不懂呢?高手帮帮忙啊!!
创建对象过程:
1. new C(4) --- 调用C(int a) 创建匿名对象(假设为inner,这个对象是隐含的),经过循环过程(a=4,代入),得到inner.c=10
2. new C(new C(4)) --- 即new C(inner),构造了一个对象(假设为outer)这是inner.c=10,因为传入的C类型的对象,所以调用第二个构造方法C(C b),此时 outer.c=innert.c,即outer.c=10然后通过 C c2=outer,将对象赋给对象引用c2, over!