В этом кратком руководстве рассмотрим ключевое слово 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.