Page 98 - 4836
P. 98

Конфлікт імен виникає, коли імпортуються два пакети,
                            що містять класи з однаковими іменами.
                                   У цьому випадку Java віддає перевагу класу, який був
                            імпортований  перший.  Для  звернення  до  інших  класів  слід
                            використовувати їх повні імена.
                                   Java  "переглядає"  імена  класів  в  наступному  порядку.
                            Спочатку  -  класи,  імпортовані  поодинці.  Потім  -  класи,
                            визначені в даному пакеті. В останню чергу класи з пакетів,
                            що  імпортуються  повністю  в  порядку  проходження  команд
                            import.
                                   Конфлікт  імен  виникає  так  само,  коли  ім'я  одного  з
                            параметрів методу збігається з ім'ям одного з атрибутів цього
                            ж  класу.  Така  ситуація  виникає  досить  часто,  оскільки  для
                            методу,  що  змінює  значення  цього  атрибута,  таке  називання
                            параметра досить наочно. Наприклад:
                                   class Dog {
                                   int age;
                                   ...
                                   public void setAge (int age) {
                                   ...
                                   };
                                   ...
                                   }
                                   Такий  заголовок  методу  setAge  (int  age)  кращий,  ніж
                            setAge  (int  a),  оскільки  відразу  дозволяє  судити  про
                            призначення параметра. Однак виникає питання: до чого буде
                            ставитися  ім'я  age  в  тілі  цього  методу  -  до  атрибуту  або  до
                            параметра.
                                   Відповідь:  до  параметра.  Ім'я  параметра  «перекриває»
                            ім'я атрибута.
                                   Для  того  щоб  звернутися  до  атрибута,  слід
                            використовувати повне ім'я (тобто покажчик на об'єкт this).
                                   Реалізація методу повинна виглядати таким чином:
                                   public void setAge (int age) {




                                                           96
   93   94   95   96   97   98   99   100   101   102   103