CodeGym /Blogue Java /Random-PT /Super palavra-chave em Java
John Squirrels
Nível 41
San Francisco

Super palavra-chave em Java

Publicado no grupo Random-PT
A palavra-chave super é usada em diferentes situações. Antes de começar este post, encorajamos você a aprender sobre herança em Java para um melhor entendimento.

Qual é a palavra-chave super em Java?

Super é uma palavra-chave que pode ser usada para invocar métodos substituídos da superclasse, bem como para se referir a campos ocultos da superclasse.

Por que e quando usar a palavra-chave super?

A palavra-chave super do Java tem três usos explícitos.
  1. Acesse os membros de dados da classe pai quando a classe filha também tiver membros de dados com o mesmo nome.
  2. Chame os construtores padrão ou parametrizados da classe pai na classe filha.
  3. Chame os métodos da classe pai na classe filha se a filha tiver métodos substituídos.
Vamos entender todos os três casos acima usando a ajuda de exemplos.

Exemplo 1 - Acesse os membros de dados dos pais

O Exemplo 1 ilustra como os atributos ou membros de dados da classe Vehicle podem ser acessados ​​na classe filha Car -type. Certifique-se de executar o trecho abaixo para entender bem.

class Vehicle {

	String name = "vehicle";
}

class Car extends Vehicle {

	String name = "car";

	public void printMyName() {

		System.out.println(name);
	}

	public void printParentName() {

		// use super keyword to access 
		// parent's data member / attribute
		System.out.println(super.name);
	}

	public static void main(String[] args) {

		Car myCar = new Car();
		System.out.print("My Car's Name: "); 
		myCar.printMyName();
		
		// printing the parent's name 
		// using the super keyword 
		System.out.print("My Parent Vehicle's Name: "); 
		myCar.printParentName();
	}
}
Saída
Nome do meu carro: car Nome do meu veículo principal: veículo

Exemplo 2 - Acesse os construtores dos pais na classe filha

Chamar super() explicitamente permite que você acesse o construtor padrão ou parametrizado da classe pai na classe filha. Aqui está um exemplo do construtor parametrizado. O pai, ou seja, o construtor da classe Shape , é chamado (usando super() ) na classe filha, ou seja, Triangle , para definir os atributos. Execute o programa abaixo para testar a saída você mesmo.

public class Shape {

	String name;

	public Shape(String n) {

		System.out.println("Shape() parameterized constructor called!");
		name = n;
	}
}

class Triangle extends Shape {
	
	int sides = 3;
	String color;

	public Triangle(String n, String c) {
		
		// The super keyword calls the parameterized 
		// constructor of the parent (Shape) with 
		// 'n' as a parameter 
		super(n);
		
		System.out.println("Triangle() parameterized constructor called!");
		this.color = c;
	}

	public static void main(String[] args) {

		Triangle myTriangle = new Triangle("Triangle Alpha", "Yellow");
		
		System.out.println(myTriangle.name);
		System.out.println(myTriangle.color);
	}
}
Saída
Construtor parametrizado Shape() chamado! Construtor parametrizado Triangle() chamado! Triângulo Alfa Amarelo
Desafio rápido : redesenhe o programa acima usando o construtor padrão para testar seu aprendizado. Além disso, veja como super() é diferente de super(arg) .

Exemplo 3 - Acesse o método substituído do pai na classe filha

O exemplo 3 mostra como você pode acessar os métodos da classe pai que a classe filha também define. A classe pai Sound no programa abaixo define um método voice() . A classe filha Drum também possui um método com o mesmo nome, ou seja, voice() . Isso significa que a voz do método é substituída pela subclasse. Execute o programa abaixo para saber como a palavra-chave super é necessária para usar os métodos da classe pai na classe filha.

public class Sound {

	public void voice() {
		System.out.println("Play sound!");
	}
}

class Drum extends Sound {

	public void voice() {
		System.out.println("Play drums!");
	}

	public void play() {

		// The super keyword calls the 
		// voice() method of the parent 
		super.voice();
		voice();
	}
	
	public static void main(String[] args) {

		Drum myDrum = new Drum();
		myDrum.play();
	}
}
Saída
Construtor parametrizado Shape() chamado! Construtor parametrizado Triangle() chamado! Triângulo Alfa Amarelo

Conclusão

Ao final deste post, esperamos que você consiga entender o funcionamento da palavra-chave super em Java. Incentivamos você a aprender a codificar na prática. Como a prática é a chave definitiva para aprender a construir a lógica. Este post irá recebê-lo de qualquer maneira sempre que você ficar preso. Até lá, bom aprendizado!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION