super em Java
Em Java, temos uma palavra-chave predefinida super que está de alguma forma relacionada à classe pai. Discutiremos a função super em detalhes neste tutorial.
Em Java, a palavra-chave super atua como uma variável de referência para os objetos da classe pai. Ele pode ser usado para chamar os métodos e variáveis da classe do pai.
Por exemplo
class Teacher { // Parent class
int grade = 90;
}
class Students extends Teacher { // subclass
Students() {
System.out.println("Grade " + super.grade);
}
}
public class Main {
public static void main(String[] args) {
Students s = new Students();
}
}
Produção:
Grade 90
No exemplo acima, acessamos a variável grade da classe pai Teacher do construtor de sua subclasse Students usando a palavra-chave super.
Também temos a função super(), que invoca o construtor de classe do pai. Esta função é usada apenas para chamar os construtores da classe pai. Ambos os construtores paramétricos e não paramétricos podem ser chamados usando a função super(). Se de alguma forma o construtor não invocar um construtor da superclasse explicitamente ao usar a função super(), então o construtor sem argumento da superclasse é chamado pelo próprio compilador Java.
Veja o código abaixo.
class Teacher { // Parent class
Teacher() // constructor
{
System.out.println("Teacher class Constructor");
}
}
class Students extends Teacher { // subclass
Students() {
super();
System.out.println("Students class Constructor");
}
}
public class Main {
public static void main(String[] args) {
Students s = new Students();
}
}
Produção:
Teacher class Constructor
Students class Constructor
Criamos uma classe pai Teacher e um construtor de classe pai no código acima, que imprime uma mensagem. Então, uma subclasse Students é estendida de Teacher, que tem um construtor Students() que consiste na função super() para invocar o construtor da classe pai. Então temos a classe principal, que chama a subclasse para executar o programa. A função super() invocou o construtor da classe pai para imprimir a mensagem da classe pai e depois da subclasse.