How to create a copy constructor (error: actual and formal argument lists differ in length)

How to create a copy constructor (error: actual and formal argument lists differ in length)

我在处理当前的作业时遇到了问题(在 Java 中完成)。 我得到了一个与抽象 class 和子 classes 相关的项目。但是,我坚持为它创建复制构造函数,因为我不断收到错误消息:实际参数列表和形式参数列表的长度不同。 在这里,arr 是抽象的 "super" class,其中仅定义了构造函数(如下所示)。构造函数具有对应于二维数组的行 (m) 和列 (n) 的参数。在 Board class(它扩展了 arr)中,我必须同时定义构造函数和复制构造函数。我已经使用 super(m,n) 定义了构造函数,但我无法定义复制构造函数(而且我不确定 subclass 构造函数在这里是否正确)。

在 class:

protected int a, b;
protected Arr (int height, int width) { 
   a = height; 
   b = width; 
}

在板子中class:

public class Board extends Arr{
private int[][] space;
public Board (int a, int b){
   super(a,b);
   this.space = new int[a][b];
}

拷贝构造函数

public Board(Board X) {
   board copy = new Board(a,b);
   copy.space = X.space;
}

我在 "public board(board X) {" 行收到一个错误,因为我的参数似乎有误。但是,我不允许在这里更改参数。从我以前对此的研究中,我只知道复制构造函数复制参数对象,但我不能这样做,因为我不知道如何制作。 感谢您的帮助

您缺少 class 定义中的关键字 "class",首先:

public class board extends arr

你的复制构造函数不正确:

board copy = new board(a,b);
copy.data = X.data;

您所做的只是创建一个 different board 实例,它会立即被丢弃。您没有设置 this 实例的任何值。

你需要调用超级构造函数:

super(X.m, X.n);

Class 名字应该是 PascalCase