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();
   }
}