java - 使用多个类时构造函数未定义
问题描述
我有个问题。我第一次在 JAVA 中处理多个类。我在做这件事时遇到了一些麻烦。我创建了一个类,我将从另一个类中调用它。我想做一个 type Coordinate
,顾名思义,它保存坐标。然后,我想移动这些坐标。到目前为止,代码如下所示:
public class Coordinate {
double x;
double y;
Coordinate(){
x=0;
y=0;
}
public Coordinate(int x, int y){
this.x = x;
this.y = y;
System.out.print(x);//TO TEST WHETHER IT DOES SOMETHING
}
Coordinate shiftCoordinate(int z, int w){
this.x = x + z;
this.y = y+ w;
return new Coordinate(x,y);//ERROR: The constructor Coordinate(double, double) is undefined
}
}
它会在声明的地方引发错误。我不明白这个错误。在我的“主要”课程中,我做了以下事情:
void start() {
Coordinate coordinate = new Coordinate();
coordinate.x=3;
coordinate.y=4;
}
我希望这可以打印3
,但事实并非如此。我哪里错了?
解决方案
首先,您不使用 mutiples 类,只有一个 :Coordinate
但您需要多个构造函数。
由于您的属性是
double
创建需要该类型的构造函数,因此在您编写时将使用它new Coordinate(5,6)
public Coordinate(double x, double y) { this.x = x; this.y = y; }
如果您想要一个默认构造函数(无参数),它将在您调用时使用
new Coordinate()
您想要一种从
Coordinate
实例转移的方法,您有 2 种方法:修改当前实例或创建一个新实例,但不要同时执行这两种方法(如您的代码),最后获得 2 个具有相同值的对象是没有用的// modify current instance void shiftCoordinate(double z, double w) { this.x = x + z; this.y = y + w; } // return a new object Coordinate shiftCoordinate(double z, double w) { return new Coordinate(this.x + z, this.y + w); }
此外,您最后的代码使用没有参数的默认构造函数,所以这很正常,您看不到任何打印使用new Coordinate(3,4)
来查看它
一个经典的构造函数也是,克隆一个实例的构造函数,它接受一个实例并创建一个具有相同值的新实例:
public Coordinate(Coordinate clone) {
this.x = clone.x;
this.y = clone.y;
}
推荐阅读
- javascript - Google Apps 脚本 - 如何将此代码应用于 Google 表格中的多个表格
- python - 使用数据库中的父节点和子节点填充 TreeView TKinter 小部件
- c++ - C++ - std::list.erase() 不删除元素
- php - curl https ssl证书问题错误#35
- perl - 在 Perl 脚本中“使用”基于 Moose 的包
- matlab - 在Matlab中填充复平面中的区域
- laravel - 了解传递给 Vue 子组件的路由器视图的道具,道具数据未呈现
- javascript - Load dynamic Vue routes from json file
- c# - 画布 ui 操纵杆元素的 X 轴旋转不起作用,而 Y 轴在 Unity 中起作用
- sql - 当所有元组在重复项和原始元组中都相同时,如何删除重复项但保留一个?在PostgreSQL中