有一道题目搞不明白,请指点
public class Cons extends Consup
{
     static int c ;
     Cons()  
     {
         this(c);
         System.out.println("def");
      }
      Cons(int a)  
      {
             System.out.println("int param");
      }
      private Cons(String a) //为什么要把构造函数设置成private
     // Cons(String a)
      {
              System.out.println("String param");
      }
      public static void main(String[] args)  
      {
             Cons c = new Cons();
             Cons c1 = new Cons("test");//这儿为什么调用了基类的无参构造函数而不是有参数的构造函数?
      }
}
class Consup  
{
         Consup()
          {
              System.out.println("Consup def");
          }
          Consup(String a)  
          {
                   System.out.println("Consup String param");
          }
}
这道题的结果是
Consup def
int param
def
Consup def
String param
为什么不是
Consup def
int param
def
Consup String param
String param
------解决方案--------------------public class Cons extends Consup
{
  static int c ;
  Cons() 
 {
  this(c);
  System.out.println("def");
  }
  Cons(int a) 
 {
  System.out.println("int param");
  }
  private Cons(String a) //为什么要把构造函数设置成private
为了使此构造方法只能在本类中使用!其实就是private的用法
  // Cons(String a)
  {
super(a);//这样调用的就是父类的有参数的构造方法
  System.out.println("String param");
  }
  public static void main(String[] args) 
 {
  Cons c = new Cons();
  Cons c1 = new Cons("test");//这儿为什么调用了基类的无参构造函数而不是有参数的构造函数?
//因为父类的构造方法是自动调用的,自动调用的就是无参构造方法
  }
}
class Consup 
{
  Consup()
  {
  System.out.println("Consup def");
  }
  Consup(String a) 
 {
  System.out.println("Consup String param");
  }
}
声明:本人新手
------解决方案--------------------Java code
public class Cons extends Consup
{
  static int c ;
  
  Cons()  
  {
      this(c);
      System.out.println("def");
  }
  
  Cons(int a)  
  {
      System.out.println("int param");
  }
  
  private Cons(String a) //为什么要把构造函数设置成private----不知道有什么意义???
  // Cons(String a)
  {
      System.out.println("String param");
  }
  
  public static void main(String[] args)  
  {
      Cons c = new Cons();
      Cons c1 = new Cons("test");//这儿为什么调用了基类的无参构造函数而不是有参数的构造函数?
    }                            //1.调用Cons(String a)构造函数,2.这边需要注意,会先隐式调用父类构造函数Consup(), 
                                 //3.执行父类的无参构造函数,执行输出语句,输出"Consup def",
                                 //4.回到Cons(String a)构造函数,执行输出语句,输出"String param"
}
class Consup  
{
  Consup()
  {
      System.out.println("Consup def");
  }
  
  Consup(String a)  
  {
      System.out.println("Consup String param");
  }
}