日期:2014-05-20  浏览次数:20751 次

构造函数调用的一点小问题
Java code

public class Gouzao1
{
  public static void main(String[] args)
  {
    Shili1 L1=new Shili1();
    L1.Shili1();
    Shili1 L2=new Shili1(5,"sdf");//加入这个后就出错了
  
   
  }
}
class Shili1
{
  int a;
  String b;
  String c;
  void Shili1()
  {
    System.out.println("我是没有参数的哦!");
  }
  void Shili1(int a,String b)
  {
    this.a=a;
    this.b=b;
  }
  void Shili1(int a,String b,String c)
  {
    this.b=b;
    this.c=c;
  }
}

 


 

------解决方案--------------------
构造函数没有返回类型
Java code
public Shilil(int a,String s)
{
  //...
}

------解决方案--------------------
Shili1 L1=new Shili1();//没有明确定义构造函数,调用默认构造函数
L1.Shili1();
Shili1 L2=new Shili1(5,"sdf");//加入这个后就出错了 ----你根本没有定义这个参数的构造函数。



------解决方案--------------------
你定义的是三个方法 而不是重载的三个构造函数
第一个调用的是默认的构造函数
而你并没有定义其他的构造函数
------解决方案--------------------
构造方法是没有返回值的,不然会被认为是普通方法
所以应该是
public class Gouzao1
{
public static void main(String[] args)
{
Shili1 L1=new Shili1();
L1.Shili1();
Shili1 L2=new Shili1(5,"sdf");//加入这个后就出错了
  
 
}
}
class Shili1
{
int a;
String b;
String c;
 void Shili1()
{
System.out.println("我是没有参数的哦!");
}
Shili1(int a,String b)
{
this.a=a;
this.b=b;
}
Shili1(int a,String b,String c)
{
this.b=b;
this.c=c;
}
}