CodeGym /Blog Java /Random-ES /Súper palabra clave en Java
Autor
John Selawsky
Senior Java Developer and Tutor at LearningTree

Súper palabra clave en Java

Publicado en el grupo Random-ES
La palabra clave super se utiliza en diferentes situaciones. Antes de comenzar con esta publicación, lo alentamos a que aprenda sobre la herencia en Java para una mejor comprensión.

¿Cuál es la palabra clave super en Java?

Super es una palabra clave que se puede utilizar para invocar métodos anulados de la superclase, así como para hacer referencia a campos ocultos de la superclase.

¿Por qué y cuándo usar la palabra clave super?

La palabra clave super de Java tiene tres usos explícitos.
  1. Acceda a los miembros de datos de la clase principal cuando la clase secundaria también tenga miembros de datos con el mismo nombre.
  2. Llame a los constructores predeterminados o parametrizados de la clase principal en la clase secundaria.
  3. Llame a los métodos de la clase principal en la clase secundaria si la secundaria tiene métodos anulados.
Comprendamos todos los tres casos anteriores con la ayuda de ejemplos.

Ejemplo 1: acceder a los miembros de datos de los padres

El ejemplo 1 ilustra cómo se puede acceder a los atributos o miembros de datos de la clase Vehicle en la clase secundaria Car -type. Asegúrese de ejecutar el fragmento a continuación para comprenderlo bien.

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();
	}
}
Producción
Nombre de mi coche: coche Nombre de mi vehículo principal: vehículo

Ejemplo 2: acceda a los constructores de los padres en la clase secundaria

Llamar explícitamente a super() le permite acceder al constructor predeterminado o parametrizado de la clase principal en la clase secundaria. Aquí hay un ejemplo del constructor parametrizado. El constructor de la clase padre, es decir, Forma , se llama (usando super() ) en la clase secundaria, es decir, Triángulo , para establecer los atributos. Ejecute el programa a continuación para probar la salida por sí mismo.

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);
	}
}
Producción
¡Constructor parametrizado Shape() llamado! ¡Constructor parametrizado Triangle() llamado! Triángulo Alfa Amarillo
Desafío rápido : rediseñe el programa anterior utilizando el constructor predeterminado para probar su aprendizaje. Además, vea cómo super() es diferente de super(arg) .

Ejemplo 3: acceda al método anulado del padre en la clase secundaria

El ejemplo 3 muestra cómo puede acceder a los métodos de la clase principal que también define la clase secundaria. La clase principal Sound en el programa a continuación define un método voice() . La clase secundaria Drum también tiene un método con el mismo nombre, es decir, voice() . Significa que la subclase anula el método voice . Ejecute el programa a continuación para aprender cómo la palabra clave super es necesaria para usar los métodos de la clase principal en la clase secundaria.

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();
	}
}
Producción
¡Constructor parametrizado Shape() llamado! ¡Constructor parametrizado Triangle() llamado! Triángulo Alfa Amarillo

Conclusión

Al final de esta publicación, esperamos que pueda comprender el funcionamiento de la palabra clave super en Java. Te animamos a que aprendas a programar con la práctica. Como la práctica es la clave definitiva para aprender a construir la lógica. Esta publicación te dará la bienvenida de todos modos cada vez que te quedes atascado. Hasta entonces, feliz aprendizaje!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION