Ключевое слово super
Ключевое слово super в Java используется
для доступа к членам родительского класса из
дочернего класса. С его помощью можно вызвать
конструктор суперкласса, обратиться к методу
или полю родительского класса, которые были
переопределены или скрыты в дочернем классе.
При вызове конструктора super должен
быть первой строкой в конструкторе дочернего класса.
Синтаксис
super();
super(parameters);
super.methodName(parameters);
super.fieldName;
Пример
Давайте вызовем конструктор родительского класса из конструктора дочернего класса:
class Parent
{
protected String name;
public Parent(String name)
{
this.name = name;
}
}
class Child extends Parent
{
public Child(String name)
{
super(name);
}
public void printName()
{
System.out.println(name);
}
}
public class Main
{
public static void main(String[] args)
{
Child child = new Child("abcde");
child.printName();
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызовем метод родительского класса, который переопределён в дочернем классе:
class Parent
{
public void show()
{
System.out.println("Parent method");
}
}
class Child extends Parent
{
@Override
public void show()
{
super.show();
System.out.println("Child method");
}
}
public class Main
{
public static void main(String[] args)
{
Child child = new Child();
child.show();
}
}
Результат выполнения кода:
"Parent method"
"Child method"
Пример
Давайте обратимся к полю родительского класса, которое скрыто полем с таким же именем в дочернем классе:
class Parent
{
protected String value = "12345";
}
class Child extends Parent
{
private String value = "abcde";
public void printValues()
{
System.out.println(super.value);
System.out.println(this.value);
}
}
public class Main
{
public static void main(String[] args)
{
Child child = new Child();
child.printValues();
}
}
Результат выполнения кода:
"12345"
"abcde"