实际和正式的参数列表长度不同,但它们实际上是相同的

时间:2013-12-23 02:18:36

标签: java constructor

所以我正在尝试创建一个boxclient,用以下文件创建一个带有点的框:

import java.awt.Point;

public class boxclient{

    public static void main(String[] args){
     Point o = new Point(5,5);
     Point t = new Point(5,5);
     Point r = new Point(5,5);
     Point f = new Point(5,5);

     Box one = new Box(o,t,r,f);
     }

    }

那是我的客户,这是我的盒子类:

import java.awt.Point;


public class Box{
private int x,y;
private int rot;
private int width, height;

private Point[] my = new Point[4];
private Box[] conto = new Box[100];
private int concount = 0;

 public void Box(Point topleft, Point topright, Point botleft, Point botright){
  this.my[0] = topleft;
  this.my[1] = topright;
  this.my[2] = botleft;
  this.my[3] = botright;
  }

我没有明显的理由得到这个错误:

找到1个错误: 文件:C:\ Users \ George \ Desktop \ 2dShooter \ boxclient.java [line:11] 错误:类Box中的构造函数Box不能应用于给定类型;   必需:没有参数   发现:java.awt.Point,java.awt.Point,java.awt.Point,java.awt.Point   原因:实际和正式的参数列表长度不同

有什么想法吗?我已经尝试重新启动我的drjava并保存和编译并重写几次相同的名称。

3 个答案:

答案 0 :(得分:7)

public void Box(Point topleft, Point topright, Point botleft, Point botright){

这不是声明构造函数的正确方法。将其替换为:

public Box(Point topleft, Point topright, Point botleft, Point botright){

答案 1 :(得分:1)

您与构造函数方法混淆了。方法的返回类型至少为 void 。但构造函数具有任何返回类型。他们只是创建新实例

所以,

public void Box(Point topleft, Point topright, Point botleft, Point botright){

表示Method声明,它不会被识别为构造函数。这就是抛出错误的原因。

您必须使用返回类型声明构造函数,就像下面的那样

public Box(Point topleft, Point topright, Point botleft, Point botright){

现在,构造函数具有Point类型的正确参数列表。现在不会有任何错误。希望你明白!

答案 2 :(得分:0)

您需要添加构造函数。你这里只是在调用方法。