Иллюстрированный самоучитель по Java

       

Можно ли внутри подкласса обратиться


public

должен остаться открытым, защищенный

protected

может стать открытым.

Можно ли внутри подкласса обратиться к методу суперкласса? Да, можно, если уточнить имя метода, словом

super

, например,

super.moveTo(30, 40)

. Можно уточнить и имя метода, записанного в этом же классе, словом

this

, например,

this.moveTo (50, 70)

, но в данном случае это уже излишне. Таким же образом можно уточнять и совпадающие имена полей, а не только методов.

Данные уточнения подобны тому, как мы говорим про себя "я", а не "Иван Петрович", и говорим "отец", а не "Петр Сидорович".

Переопределение методов приводит к интересным результатам. В классе

Pet

мы описали метод

voice()

. Переопределим его в подклассах и используем в классе

chorus

, как показано в листинге 2.2.





Листинг 2.2.




Пример полиморфного метода

abstract class Pet{

   abstract void voice(); 

}

class Dog extends Pet{

   int k = 10;

   void voice(){

      System.out.printin("Gav-gav!");

   }

}

class Cat extends Pet{

   void voice () {

      System.out.printin("Miaou!"); 

   }

}

class Cow extends Pet{ 

   void voice(){

      System.out.printin("Mu-u-u!");

   }

}

public class Chorus(

   public static void main(String[] args){ 

      Pet[] singer = new Pet[3]; 

      singer[0] = new Dog(); 

      singer[1] = new Cat(); 

      singer[2] = new Cow(); 

      for (int i = 0; i < singer.length; i++)

         singer[i].voice();

   }

}

На рис. 2.1 показан вывод этой программы. Животные поют своими голосами!


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий