Java-Shildt-197DemoSuper
Полный справочник по Java. Java SE 6 Edition. 7-е издание. Герберт Шилдт. "Вильямс", Москва - Санкт-Петербург - Киев, 2007, стр.197.
// 197
// Полная реализация класса BoxWeight.
class Box {
private double width;
private double height;
private double depth;
// конструирование клона объекта
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; // параллелепипеда
}
// 198
// конструктор, используемый при создании куба
Box(double len) {
width = height = depth = len;
}
// вычисление и возврат объема
double volume() {
return width * height * depth;
}
}
// Теперь BoxWeight полностью реализует все конструкторы
class BoxWeight extends Box {
double weight; // вес параллелепипеда
// конструирование клона объекта
BoxWeight(BoxWeight ob) { // передача объекта конструктору
super(ob);
weight = ob.weight;
}
// конструктор, используемый при указании всех параметров
BoxWeight(double w, double h, double d, double m) {
super(w, h, d); // вызов конструктора суперкласса
weight = m;
}
// конструктор, используемый по умолчанию
BoxWeight() {
super();
weight = -1;
}
// конструктор, используемый при создании куба
BoxWeight(double len, double m) {
super(len);
weight = m;
}
}
class DemoSuper {
public static void main(String args[]) {
BoxWeight mybox1 = new BoxWeight(10, 20, 15, 34.3);
BoxWeight mybox2 = new BoxWeight(2, 3, 4, 0.076);
BoxWeight mybox3 = new BoxWeight(); // по умолчанию
BoxWeight mycube = new BoxWeight(3, 2);
BoxWeight myclone = new BoxWeight(mybox1);
double vol;
vol = mybox1.volume();
System.out.println("Volume mybox1 equal " + vol);
System.out.println("Weight mybox1 equal " + mybox1.weight);
System.out.println();
vol = mybox2.volume();
System.out.println("Volume mybox2 equal " + vol);
System.out.println("Weight mybox2 equal " + mybox2.weight);
System.out.println();
vol = mybox3.volume();
System.out.println("Volume mybox3 equal " + vol);
System.out.println("Weight mybox3 equal " + mybox3.weight);
System.out.println();
// 199
vol = myclone.volume();
System.out.println("Volume myclone equal " + vol);
System.out.println("Weight myclone equal " + myclone.weight);
System.out.println();
vol = mycube.volume();
System.out.println("Volume mycube equal " + vol);
System.out.println("Weight mycube equal " + mycube.weight);
System.out.println();
}
}