我在当前的任务中遇到了问题(用 Java 完成)。我得到了一个关于抽象类和子类的项目。但是,我坚持为它创建复制构造函数,因为我不断收到错误消息:实际和形式参数列表的长度不同。这里, arr 是抽象的“超级”类,其中仅定义了构造函数(如下所示)。构造函数的参数对应于二维数组的行 (m) 和列 (n)。在 Board 类(扩展 arr)中,我必须定义构造函数和复制构造函数。我已经使用 super(m,n) 定义了构造函数,但我无法定义复制构造函数(而且我不确定这里的子类构造函数是否正确)。
在 arr 类中:
protected int a, b;
protected Arr (int height, int width) {
a = height;
b = width;
}
在板子类中:
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) {”行上收到一个错误,因为我似乎有错误的论点。但是,我不允许在这里更改参数。从我之前对此的研究中,我只知道复制构造函数复制了参数对象,但我不能这样做,因为我不知道如何制作一个。谢谢你的帮助
首先,您在类定义中缺少关键字“类”:
public class board extends arr
您的复制构造函数不正确:
board copy = new board(a,b);
copy.data = X.data;
您所做的只是创建一个不同的 board
实例,该实例会立即被丢弃。您没有设置此实例的任何值。
您需要调用超级构造函数:
super(X.m, X.n);
类名应该是PascalCase
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句