Java-Shildt-167OverloadCons2
Полный справочник по Java. Java SE 6 Edition. 7-е издание. Герберт Шилдт. "Вильямс", Москва - Санкт-Петербург - Киев, 2007, стр.167.
// 167
// В этой версии Box допускает инициализацию одного объекта другим.
class Box {
double width;
double height;
double depth;
// Обратите внимание на этот конструктор. Он использует объект типа Box.
Box(Box ob) { // передача объекта конструктору
width = ob.width;
height = ob.height;
depth = ob.depth;
}
// конструктор, используемый при указании всех измерений
Box(double w, double h, double d) {
width = w;
height = h;
depth = d;
}
// конструктор, используемый, если ни одно из изменений не указано
Box() {
width = -1; // значение -1 используется для указания
height = -1; // не инициализированного
depth = -1; // параллелепипеда
}
// конструктор, используемый при создании куба
Box(double len) {
width = height = depth = len;
}
// вычисление и возврат объема
double volume() {
return width * height * depth;
}
}
class OverloadCons2 {
public static void main(String args[]) {
// создание параллелепипедов с применением различных конструкторов
Box mybox1 = new Box(10, 20, 15);
Box mybox2 = new Box();
Box mycube = new Box(7);
Box myclone = new Box(mybox1); // создание копии объекта mybox1
double vol;
// получение объема первого параллелепипеда
vol = mybox1.volume();
System.out.println("Volume mybox1 equal " + vol);
// получение объема второго параллелепипеда
vol = mybox2.volume();
System.out.println("Volume mybox2 equal " + vol);
// получение объема куба
vol = mycube.volume();
System.out.println("Volume mycube equal " + vol);
// получение объема клона
vol = myclone.volume();
System.out.println("Volume myclone equal " + vol);
}
}