Создаём копию другого прямоугольника (он и передаётся в параметрах):
public class Rectangle {
private int left, top, width, height;
Rectangle p;
public Rectangle(int left, int top, int width, int height) {
this.left = left;
this.top = top;
this.width = width;
this.height = height;
}
public Rectangle(Rectangle p) {
p.top = this.top;
p.left = this.left;
p.width = this.width;
p.height = this.height;
}
}
Почему передаются параметры из переменных главного класса? Разве они не остаются пустыми?
Способ клонирования объекта, который Вы хотите реализовать, будет выглядеть вот так:
public class Rectangle {
private int left, top, width, height;
public Rectangle(int left, int top, int width, int height) {
this.left = left;
this.top = top;
this.width = width;
this.height = height;
}
public Rectangle(Rectangle p) {
this(p.left, p.top, p.width, p.height);
}
}
Здесь в конструктор Rectangle(Rectangle p)
передается объект Rectangle p
, с данными которого вызывается конструктор Rectangle(int left, int top, int width, int height)
.
В этом случае может помочь метод java.lang.Object.clone()
. Чтобы его использовать класс должен выглядеть так:
public class Rectangle implements Cloneable {
private int left, top, width, height;
public Rectangle(int left, int top, int width, int height) {
this.left = left;
this.top = top;
this.width = width;
this.height = height;
}
@Override
public Rectangle clone() throws CloneNotSupportedException {
return (Rectangle) super.clone();
}
}
Тогда, чтобы получить копию, достаточно лишь вызвать метод:
Rectangle r1 = new Rectangle(1, 2, 4, 5);
Rectangle r2 = r1.clone();
Виртуальный выделенный сервер (VDS) становится отличным выбором
В Desktop Swing приложении есть класс Item в пакете Data, класс ItemFrame (графическое заполнение и редактирование класса Item) в пакете GUI и класс NetWorker в пакете...
Возможен ли интерфейс не содержащий ни одного члена и если да, какой практический смысл от такого интерфейса?
Столкнулся с проблемой, при компиляции приложения libgdx, приложение не открывает окно, а завершается с сообщением Process finished with exit code -1073740791 (0xC0000409)...