class Base 
{
Base(int i)
{
System.out.println("call Base(int i)");
}
}
public class Sub extends Base
{
Sub()
{
this(0);//这行语句求解释?
System.out.println("call Sub()");
}
Sub(int i)
{
Sub(i)//????????
System.out.println("call Sub(int i)");
}
public static void main(String arg[])
{
Sub sub=new Sub();
}
}
我是初学者还请各位详解这个程序

解决方案 »

  1.   

    楼主可能写错了一点就是Sub(i)//????????可能是super (i);要不然编译通不过,super(i)是调用父类变量为一个整形的构造函数
    Base(int i)
     {
     System.out.println("call Base(int i)");
     }this(i)就是调用当前类的变量为一个整形的构造函数
    Sub(int i)
     {
     Sub(i)//????????
     System.out.println("call Sub(int i)");
     }
      

  2.   

    this(0);里面的参数值0是表示调用当前类的整型构造函数么?
      

  3.   

    不是,this(0) 0为参数,比如this()就是调用当前无参构造函数,this(0),因为有一个参数0,所以就要调用当前构造函数中有且一个参数,参数类型为整形的构造函数,这样楼主应该明白了吧。
      

  4.   

    Sub(int i)
    {
    Sub(i)//这里应该是super(i);而不是Sub(i);
    System.out.println("call Sub(int i)");
    }
      

  5.   

    Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。