Page 79 - 6253
P. 79

вона є незмінною, тобто константою. Слово final перед посиланням на об’єкт робить

            незмінним тільки посилання, але не сам об’єкт. У цьому випадку посилання вже не

            зможе  вказувати  на  інший  об’єкт,  а  сам  об’єкт  при  цьому  можна  змінювати.  Це

            обмеження  стосується  і  масивів,  які  у  мові  Java  є  об’єктами.  Значення  змінним

            класу, оголошені як final, необхідно задавати або під час їхнього оголошення, або у

            конструкторі класу.

                    Також у мові Java дозволено оголошувати зі словом final параметри методів,

            що забороняє змінювати їхні значення під час виклику відповідного методу.

                    Якщо  слово  final  додати  перед  оголошенням  методу,  то  такий  метод  стає

            незмінним. Ця властивість використовується у випадку, коли необхідно заборонити

            перекриття методу в підкласах. Наприклад,

                    class Box {

                     final double volume() {

                       return width * height * depth;

                     }

                    }

                    Будь-яка спроба перекрити метод, оголошений як final, призведе до помилки

            під час компіляції.

                    З  іншого  боку,  методи,  оголошені  як  final,  дозволяють  оптимізувати

            програмний  код.  Компілятор  організовує  звертання  до  них  як  до  виклику

            вбудованого коду (фактично заміняє виклик методу на копію реального коду, який є

            в цьому методі), оскільки відомо, що вони не будуть перекриті у підкласі.

                    У  мові  Java  використовується  методика  пізнього  зв’язування  (late  binding),

            тобто  рішення,  який  саме  метод  буде  викликано,  приймається  під  час  виконання

            програми.  Проте  методи  оголошені  як  final  не  можуть  бути  перекриті  з  іншого

            класу, тому питання, пов’язані з їхнім викликом, вирішуються на стадії компіляції.

            Такий підхід називають раннім зв’язуванням (early binding).

                    Ключове  слово  final  використовується  також  з  метою  заборони  створення

            підкласів  деякого  визначеного  класу.  У  такій  інтерпретації  його  поміщають  на

            початку визначення класу. Оголошення класу як final неявно робить усі його методи

            також final (без можливості перекриття).




                                                              78
   74   75   76   77   78   79   80   81   82   83   84