Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Интерфейсы и Наследование
Раздел: Наследование
Используя Ключевое слово супер
Домашняя страница > Изучение Языка Java > Интерфейсы и Наследование

Используя Ключевое слово супер

Доступ к Элементам Суперкласса

Если Ваш метод переопределяет один из методов своего суперкласса, можно вызвать переопределенный метод с помощью ключевого слова super. Можно также использовать super обратиться к скрытому полю (хотя сокрытию полей обескураживают). Рассмотрите этот class, Superclass:

public class Superclass {

    public void printMethod() {
        System.out.println("Printed in Superclass.");
    }
}

Вот подкласс, вызванный Subclass, это переопределяет printMethod():

public class Subclass extends Superclass {

    // overrides printMethod in Superclass
    public void printMethod() {
        super.printMethod();
        System.out.println("Printed in Subclass");
    }
    public static void main(String[] args) {
        Subclass s = new Subclass();
        s.printMethod();    
    }
}

В пределах Subclass, простое имя printMethod() обращается к тому, объявленному в Subclass, который переопределяет тот в Superclass. Так, чтобы обратиться к printMethod() наследованный от Superclass, Subclass должен использовать полностью определенное имя, используя super как показано. Компиляция и выполнение Subclass печатает следующее:

Printed in Superclass.
Printed in Subclass

Конструкторы подкласса

Следующий пример иллюстрирует, как использовать super ключевое слово, чтобы вызвать конструктора суперкласса. Вспомните из Bicycle пример это MountainBike подкласс Bicycle. Вот MountainBike конструктор (подкласса), который вызывает конструктора суперкласса и затем добавляет собственный код инициализации:

public MountainBike(int startHeight, 
                    int startCadence,
                    int startSpeed,
                    int startGear) {
    super(startCadence, startSpeed, startGear);
    seatHeight = startHeight;
}   

Вызов конструктора суперкласса должен быть первой строкой в конструкторе подкласса.

Синтаксис для того, чтобы вызвать конструктора суперкласса

super();  
или:
super(parameter list);

С super(), суперкласс конструктор без параметров вызывают. С super(parameter list), конструктора суперкласса с соответствующим списком параметров вызывают.


Отметьте: Если конструктор явно не вызывает конструктора суперкласса, компилятор Java автоматически вставляет звонок в конструктора без параметров суперкласса. Если у class высшего качества не будет конструктора без параметров, то Вы получите ошибку времени компиляции. Object действительно имеет такого конструктора, так если Object единственный суперкласс, нет никакой проблемы.

Если конструктор подкласса вызывает конструктора его суперкласса, или явно или неявно, Вы могли бы думать, что будет целая цепочка вызванных конструкторов, полностью назад конструктору Object. Фактически, дело обстоит так. Это вызывают конструктором, объединяющим в цепочку, и Вы должны знать об этом, когда есть длинная линия спуска class.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Сокрытие Полей
Следующая страница: Объект как Суперкласс