为什么Java说我的构造函数是未定义的,即使它是?

时间:2015-04-12 15:27:51

标签: java constructor

我在Java博士中收到一条错误消息,说我的构造函数未定义为String,int,int,尽管我的构造函数具有这些参数(按相同顺序)并且所有内容都是大小写匹配。它也不是一个类的问题,如同另一个线程所暗示的那样过时了。

这是我的“Mall”类,构造函数接受一个字符串int和一个int

public class Mall{
  //declare variables
  private String name;//name of the mall
  private int length; //length of the mall = # of columns of stores array
  private int width; //width of the mall = # of rows of stores array


  public void Mall(String name, int length, int width){
   //this is the constructor I want to use
   this.name=name;
   this.length=length;
   this.width=width;
  }
 }

这是我的主要方法

public class Test1{
 public static void main(String[] args){
  Mall m = new Mall("nameOfMall", 3, 3); //here is where the error happens
 }
}

我已经尝试创建一个没有参数的构造函数,然后在我的对象创建语句中不传递任何参数,虽然这不会导致任何编译错误,但它也没有将其设置为正确的值。我也可以在Mall类中调用其他方法,这让我相信它是我的创建语句的问题,而不是Mall类中的任何内容。我认为这是对的吗?导致错误的原因是什么?

3 个答案:

答案 0 :(得分:4)

你有一个方法而不是一个构造函数。构造函数没有void

这是一种方法:

public void Mall(String name, int length, int width){
   this.length=length;
   this.width=width;
}

这是一个构造函数:

public Mall(String name, int length, int width)
{
    this.length = length;
    this.width = width;
}

答案 1 :(得分:2)

从构造函数中删除返回类型void

有关构造函数的更多详细信息是:Here

答案 2 :(得分:0)

删除void

  Mall(String name, int length, int width){
   //this is the constructor I want to use
   this.name=name;
   this.length=length;
   this.width=width;
  }