Перейти к содержанию

Руководство по ключевому слову super в Java

В этом кратком руководстве рассмотрим ключевое слово super в Java.

Можно использовать ключевое слово super для доступа к родительскому классу.

Рассмотрим применение ключевого слова super в языке.

Ключевое слово super с конструкторами

Можно использовать super() для вызова родительского конструктора по умолчанию. Это должен быть первый оператор в конструкторе.

В примере ниже будем использовать super(message) с аргументом String:

public class SuperSub extends SuperBase {

    public SuperSub(String message) {
        super(message);
    }
}

Создадим экземпляр дочернего класса и посмотрим, что произойдет дальше:

SuperSub child = new SuperSub("сообщение от дочернего класса ");

Ключевое слово new вызывает конструктор SuperSub, который сам сначала вызывает родительский конструктор и передает ему аргумент String.

Доступ к переменным родительского класса

Создадим родительский класс с экземпляром переменной message:

public class SuperBase {
    String message = "родительский класс";

    // конструктор по умолчанию

    public SuperBase(String message) {
        this.message = message;
    }
}

Теперь создадим дочерний класс с одноименной переменной:

public class SuperSub extends SuperBase {

    String message = "дочерний класс";

    public void getParentMessage() {
        System.out.println(super.message);
    }
}

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

Ключевое слово super с переопределением метода

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

public class SuperBase {

    String message = "родительский класс";

    public void printMessage() {
        System.out.println(message);
    }
}

И переопределим метод printMessage() в дочернем классе:

public class SuperSub extends SuperBase {

    String message = "дочерний класс";

    public SuperSub() {
        super.printMessage();
        printMessage();
    }

    public void printMessage() {
        System.out.println(message);
    }
}

Можно использовать super для доступа к переопределенному методу из дочернего класса. Метод super.printMessage() в конструкторе вызывает родительский метод из SuperBase.

Заключение

В этой статье мы рассмотрели ключевое слово super.

Полный код доступен на Github.

Оригинал