A palavra-chave super em Java é usada para fazer referência ao objeto de classe pai imediato. É comumente usado para acessar métodos e construtores da classe principal, permitindo que uma subclasse herde e reutilize a funcionalidade de sua superclasse.
Uso
A palavra-chave super pode ser usada em três contextos principais:
Para chamar o construtor da superclasse.
Para acessar um método da superclasse que foi substituído na subclasse.
Para acessar um campo da superclasse quando ele estiver oculto por um campo com o mesmo nome na subclasse.
classAnimal{Animal(){
System.out.println("Animal constructor called");}}classDogextendsAnimal{Dog(){super();// Calls the constructor of Animal class
System.out.println("Dog constructor called");}}publicclassTestSuper{publicstaticvoidmain(String[] args){
Dog d =newDog();// Output: Animal constructor called// Dog constructor called}}Tecnologia
Neste exemplo, a chamada super() no construtor Dog invoca o construtor da classe Animal.
Exemplo 2: Acesso ao método da superclasse
classAnimal{voidsound(){
System.out.println("Animal makes a sound");}}classDogextendsAnimal{voidsound(){super.sound();// Calls the sound() method of Animal class
System.out.println("Dog barks");}}publicclassTestSuper{publicstaticvoidmain(String[] args){
Dog d =newDog();
d.sound();// Output: Animal makes a sound// Dog barks}}Tecnologia
Aqui, a chamada super.sound() no método da classe Dogsound() invoca o método sound() da classe Animal.
Exemplo 3: Acesso ao campo da superclasse
classAnimal{
String color ="white";}classDogextendsAnimal{
String color ="black";voiddisplayColor(){
System.out.println("Dog color: "+// Prints the color of Dog class
System.out.println("Animal color: "+super.// Prints the color of Animal class}}publicclassTestSuper{publicstaticvoidmain(String[] args){
Dog d =newDog();
d.displayColor();// Output: Dog color: black// Animal color: white}}Tecnologia
Neste exemplo, super.color é usado para acessar o campo color da classe Animal, que está oculto pelo campo color na classe Dog.
Dicas e práticas recomendadas
Encadeamento de construtores: Use super() no construtor de uma subclasse para garantir que o construtor da superclasse seja chamado, permitindo a inicialização adequada do objeto.
classParent{Parent(){
System.out.println("Parent constructor");}}classChildextendsParent{Child(){super();// Always the first statement in the constructor
System.out.println("Child constructor");}}Tecnologia
Sobreposição de métodos: Use super.methodName() para chamar um método da superclasse quando ele for substituído na subclasse. Isso é útil para estender ou modificar o comportamento do método herdado.
Acesso ao campo: Use super.fieldName para acessar um campo da superclasse quando ele estiver oculto por um campo com o mesmo nome na subclasse. Isso ajuda a evitar ambiguidades e garante que o campo correto seja acessado.
classParent{
int number =10;}classChildextendsParent{
int number =20;voidshowNumber(){
System.out.println(super.number);// Accesses Parent's number}}Tecnologia
Legibilidade: Use o super criteriosamente para tornar seu código mais legível e de fácil manutenção. O uso excessivo do super pode dificultar a compreensão do código.
Colocação em Construtores: Sempre coloque a chamada super() como a primeira instrução no construtor da subclasse para evitar erros de compilação.
Contextos estáticos: Lembre-se de que super não pode ser usado em métodos estáticos ou contextos estáticos, pois se refere a uma instância de uma classe.
A palavra-chave
superem Java é usada para fazer referência ao objeto de classe pai imediato. É comumente usado para acessar métodos e construtores da classe principal, permitindo que uma subclasse herde e reutilize a funcionalidade de sua superclasse.Uso
A palavra-chave
superpode ser usada em três contextos principais:Sintaxe
Exemplos
Exemplo 1: Chamando o construtor da superclasse
Neste exemplo, a chamada
super()no construtorDoginvoca o construtor da classeAnimal.Exemplo 2: Acesso ao método da superclasse
Aqui, a chamada
super.sound()no método da classeDogsound()invoca o métodosound()da classeAnimal.Exemplo 3: Acesso ao campo da superclasse
Neste exemplo,
super.coloré usado para acessar o campocolorda classeAnimal, que está oculto pelo campocolorna classeDog.Dicas e práticas recomendadas
super()no construtor de uma subclasse para garantir que o construtor da superclasse seja chamado, permitindo a inicialização adequada do objeto.super.methodName()para chamar um método da superclasse quando ele for substituído na subclasse. Isso é útil para estender ou modificar o comportamento do método herdado.super.fieldNamepara acessar um campo da superclasse quando ele estiver oculto por um campo com o mesmo nome na subclasse. Isso ajuda a evitar ambiguidades e garante que o campo correto seja acessado.supercriteriosamente para tornar seu código mais legível e de fácil manutenção. O uso excessivo dosuperpode dificultar a compreensão do código.super()como a primeira instrução no construtor da subclasse para evitar erros de compilação.supernão pode ser usado em métodos estáticos ou contextos estáticos, pois se refere a uma instância de uma classe.