Page 77 - 6253
P. 77

System.out.println("Об'єм mybox1:\t" + mybox1.volume());

                       System.out.println("Об'єм mybox2:\t" + mybox2.volume());

                       System.out.println("Об'єм mycube:\t" + mycube.volume());

                       System.out.println("Об'єм myclone:\t" + myclone.volume());

                     }

                    }

                    Запустивши програму на виконання отримаємо наступний результат:

                    Об'єм mybox1:  3000.0

                    Об'єм mybox2:  -1.0

                    Об'єм mycube:  125.0

                    Об'єм myclone:  3000.0

                    Особливий  інтерес  представляє  випадок  створення  дубліката  об’єкта,  де

            оператор  super()  викликається  з  параметром  типу  BoxWeight,  а  не  Box.  У  цьому

            випадку  буде  викликаний  конструктор  базового  класу  Вох(Вох  ob).  Як  уже

            зазначалося,  змінна  типу  базового  класу  може  посилатися  на  об’єкт,  який

            визначений у підкласі. Проте, у цьому випадку класові Box відомі тільки його власні

            змінні  width,  height  та  depth,  а  змінна  weight  ініціалізується  у  відповідному

            конструкторі  класу  BoxWeight.  Під  час  виклику  оператора  super()  виконується

            конструктор  базового  класу,  який  в  ієрархії  перебуває  на  один  рівень  вище  від

            конструктора класу, який його викликає.

                    Друга  форма  ключового  слова  super  по  функціональності  подібна  до

            ключового  слова  this,  за  винятком  того,  що  завжди  посилається  на  суперклас

            підкласу, в якому вона використана. Загальна форма застосування ключового слова

            super має наступний вигляд.

                    super.об’єктна_змінна

                    Ця форма застосування ключового слова super використовується у випадках,

            коли імена членів підкласу «перекривають» члени суперкласу з такими ж іменами.

            Для прикладу, розглянемо наступну ієрархію класів.

                    // Використання ключового слова super для запобігання перекривання імен

                    class А {

                     int i;




                                                              76
   72   73   74   75   76   77   78   79   80   81   82