Можно ли внутри подкласса обратиться
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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий