请查看下面代码的片段,我在阅读java tutorial on creating objects时偶然发现了这些代码。
// Declare and create a point object and two rectangle objects.
Point originOne = new Point(23, 94);
Rectangle rectOne = new Rectangle(originOne, 100, 200);
Rectangle rectTwo = new Rectangle(50, 100);
通过传递rectOne
类的对象(即矩形的Point
和originOne
以及width
来创建height
对象。如果您查看Rectangle
类documentation,您会发现文档中没有这样的构造函数可以接受三个参数(即点,宽度和高度)。但是,有一些单独的构造函数,其中一个将类Point
作为参数
Rectangle(Point p)
和另一个将矩形的宽度和高度作为参数
Rectangle(int width, int height)
我想知道你可以组合构造函数,就像我在上面从教程中分享的代码片段一样吗?
答案 0 :(得分:1)
组合构造函数?在Java
中没有这样的东西。你可以转换
Point originOne = new Point(23, 94);
Rectangle rectOne = new Rectangle(originOne, 100, 200);
要
Rectangle rectOne = new Rectangle(new Point(23, 94), 100, 200);//not a Combining.
Rectangle已经有一个接受Point的构造函数。
答案 1 :(得分:1)
不,您不能按照建议的方式组合两个构造函数。 Rectangle确实有一个3参数构造函数:
public Rectangle(Point p, int w, int h) {
origin = p;
width = w;
height = h;
}
您在文档链接中引用的Rectangle类与教程中使用的类不相关。
您可以做的是从另一个构造函数调用一个构造函数。例如,具有3个参数的构造函数可以先调用只有前两个参数的构造函数,然后初始化第3个参数。
例如,Rectangle构造函数可以重写为:
public Rectangle(Point p, int w, int h) {
this (p);
width = w;
height = h;
}
或
public Rectangle(Point p, int w, int h) {
this (w,h);
origin = p;
}
答案 2 :(得分:1)
在示例中,您不使用java.awt.Rectangle
。在本教程中,他们使用自己的Rectangle类实现,它具有这样的构造函数。
答案 3 :(得分:0)
Point originOne = new Point(23, 94);
Rectangle rectOne = new Rectangle(originOne);
rectOne.setSize(100, 200);
或
Rectangle rectOne = new Rectangle(originOne.getX(), originOne.getY(), 100, 200);
或
Dimension dimension = new Dimension(100, 200);
Rectangle rectOne = new Rectangle(originOne, dimension);
这取决于你:)
答案 4 :(得分:0)
Rectangle为7个构造函数提供了int
,Point
和Dimension
类型的不同参数。
不幸的是,没有建设者将int
与Point
或Dimension
混合在一起。
相反,您有以下选择:
仅传递整数(通过从点开始)
Point originOne = new Point(23, 94);
Rectangle rectOne = new Rectangle(originOne.x, originOne.y, 100, 200);
传递维度作为第二个参数
Point originOne = new Point(23, 94);
Dimension sizeOne = new Dimension(100, 200);
Rectangle rectOne = new Rectangle(originOne, sizeOne);
对于没有原点的矩形,您可以使用
Dimension sizeTwo = new Dimension(50, 100);
Rectangle rectTwo = new Rectangle(sizeTwo);
通过这种方式,您甚至可以轻松地重复使用不同矩形的原点或大小。