构造函数重载,我该如何进行?
Constructor overloading, how do i proceed?
在我的作业中,我们正在练习构造函数重载(纸上)。我必须实现这 3 个构造函数(填写)并且主构造函数必须生成一个坐标为 (0,0) 且半径为 1 的圆。我已经尝试实现前两个构造函数,但不知道是什么在第三个构造函数中做。一如既往地感谢你们的帮助。
public class Center
{
public double x;
public double y;
}
public class Circle
{
private Center c;
private double radius;
public Circle()
{
this(0, 0, 1); //TO-DO
}
public Circle(Center c, double radius)
{
this(0, 0, radius); //TO-DO
}
public Circle(double x, double y, double radius)
{
//TO-DO
}
}
您必须在此处将值分配给各个变量:
public Circle(double x, double y, double radius) {
this.c = new Center();
this.c.x = x;
this.c.y = y;
this.radius = radius;
}
你的第二个构造函数应该是这样的:
public Circle(Center c, double radius){
this(c.x,c.y,radius);
}
像这样:
public Circle() {
this(0,0,1);
}
public Circle(Center c, double radius){
this(c.x, c.y,radius); //you need to use the center's coordinates
}
public Circle(double x, double y, double radius) {
this.c = new Center(x, y);
this.radius = radius;
}
由于您的 class 定义为:
public class Circle {
private Center c;
private double radius;
...
}
这里的重点是变量c
是classCenter
和变量radius
是原始类型double
,您需要同时定义两者。
如您所见,第三个构造函数为您提供了三个变量:x
、y
和radius
。这三个可以与 c
和 radius
匹配的唯一方法是:
public Circle(double x, double y, double radius) {
c = new Center(x, y);
this.radius = radius; //here you must use `this` reference to avoid
//collision between the radius variable from the class and its
//counerpart from the constructor.
}
在这个构造函数中,我们创建了一个新的Center
来满足c
变量,我们把x
和y
放在那里,因为它在声明中需要Center
构造函数。我们还分配 radius
变量。
在我的作业中,我们正在练习构造函数重载(纸上)。我必须实现这 3 个构造函数(填写)并且主构造函数必须生成一个坐标为 (0,0) 且半径为 1 的圆。我已经尝试实现前两个构造函数,但不知道是什么在第三个构造函数中做。一如既往地感谢你们的帮助。
public class Center
{
public double x;
public double y;
}
public class Circle
{
private Center c;
private double radius;
public Circle()
{
this(0, 0, 1); //TO-DO
}
public Circle(Center c, double radius)
{
this(0, 0, radius); //TO-DO
}
public Circle(double x, double y, double radius)
{
//TO-DO
}
}
您必须在此处将值分配给各个变量:
public Circle(double x, double y, double radius) {
this.c = new Center();
this.c.x = x;
this.c.y = y;
this.radius = radius;
}
你的第二个构造函数应该是这样的:
public Circle(Center c, double radius){
this(c.x,c.y,radius);
}
像这样:
public Circle() {
this(0,0,1);
}
public Circle(Center c, double radius){
this(c.x, c.y,radius); //you need to use the center's coordinates
}
public Circle(double x, double y, double radius) {
this.c = new Center(x, y);
this.radius = radius;
}
由于您的 class 定义为:
public class Circle {
private Center c;
private double radius;
...
}
这里的重点是变量c
是classCenter
和变量radius
是原始类型double
,您需要同时定义两者。
如您所见,第三个构造函数为您提供了三个变量:x
、y
和radius
。这三个可以与 c
和 radius
匹配的唯一方法是:
public Circle(double x, double y, double radius) {
c = new Center(x, y);
this.radius = radius; //here you must use `this` reference to avoid
//collision between the radius variable from the class and its
//counerpart from the constructor.
}
在这个构造函数中,我们创建了一个新的Center
来满足c
变量,我们把x
和y
放在那里,因为它在声明中需要Center
构造函数。我们还分配 radius
变量。