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.