class A
{
public A()
{
System.out.println("A()");
}
}
class B
{
public B()
{
System.out.println("B()");
}
}
class C extends A
{
B b =new B();
}
public class SimpleInheritance
{
public static void main(String args[])
{
new C();
}
}
看THINKING IN JAVA里的一个例子,能解释下结果么

解决方案 »

  1.   


    class A
    {
        public A()//A的构造方法
        {
            System.out.println("A()");//打印A()
        }
    }
    class B
    {
        public B()//B的构造方法
        {
            System.out.println("B()");//打印B()
        }
    }
    class C extends A //继承A类
    {
        B b =new B();//C的一个成员变量为B的一个实例
    }
    public class SimpleInheritance
    {
        public static void main(String args[])
        {
            new C();//实例化C类!
        }
    }
      

  2.   

    关于,初始化的详细顺序,看这里
    http://blog.csdn.net/anqini/archive/2008/04/24/2319551.aspx
      

  3.   

    刚看到你的帖子,这个例子写的不错,讲了一个比较简单的继承先从最下面的"new C();"说起,在这儿new C();时候要调用C的默认构造,在调用的时候发现"C extends A",所以要去调节器类A的构造,然后在C中再实例化B的对象,这样只一个"new C();"就实例化了三个类的对象
      

  4.   

    C继承A,并增加一个B对象最为字段。
      

  5.   

    THING IN JAVA 里有讲初始化顺序的,父类要比子类先初始化