CodeGym /Blog Java /Random-FR /Super mot-clé en Java
Auteur
John Selawsky
Senior Java Developer and Tutor at LearningTree

Super mot-clé en Java

Publié dans le groupe Random-FR
Le mot-clé super est utilisé dans différentes situations. Avant de commencer avec cet article, nous vous encourageons à vous renseigner sur l'héritage en Java pour une meilleure compréhension.

Quel est le super mot-clé en Java?

Super est un mot clé qui peut être utilisé pour invoquer des méthodes surchargées de la superclasse, ainsi que pour faire référence à des champs cachés de la superclasse.

Pourquoi et quand utiliser le super mot clé?

Le mot-clé Java super a trois utilisations explicites.
  1. Accéder aux données membres de la classe parent lorsque la classe enfant a également des données membres portant le même nom.
  2. Appelez les constructeurs par défaut ou paramétrés de la classe parent dans la classe enfant.
  3. Appelez les méthodes de la classe parent dans la classe enfant si l'enfant a des méthodes surchargées.
Comprenons les trois cas ci-dessus à l'aide d'exemples.

Exemple 1 - Accéder aux membres de données du parent

L'exemple 1 illustre comment les attributs ou les membres de données de la classe Vehicle sont accessibles dans la classe enfant Car -type. Assurez-vous d'exécuter l'extrait ci-dessous pour bien comprendre.

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();
	}
}
Sortir
Nom de ma voiture : voiture Nom de mon véhicule parent : véhicule

Exemple 2 - Accéder aux constructeurs du parent dans la classe enfant

L'appel explicite de super() vous permet d'accéder à la fois au constructeur par défaut ou paramétré de la classe parent dans la classe enfant. Voici un exemple de constructeur paramétré. Le constructeur de la classe parent, c'est-à-dire Shape , est appelé (en utilisant super() ) dans la classe enfant, c'est-à-dire Triangle , pour définir les attributs. Exécutez le programme ci-dessous pour tester la sortie par vous-même.

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);
	}
}
Sortir
Constructeur paramétré Shape() appelé ! Constructeur paramétré Triangle() appelé ! Triangle Alpha Jaune
Défi rapide : reconcevez le programme ci-dessus en utilisant le constructeur par défaut pour tester votre apprentissage. Voyez également en quoi super() est différent de super(arg).

Exemple 3 - Accéder à la méthode redéfinie du parent dans la classe enfant

L'exemple 3 montre comment vous pouvez accéder aux méthodes de la classe parent que la classe enfant définit également. La classe parent Sound dans le programme ci-dessous définit une méthode voice() . La classe enfant Drum a également une méthode du même nom, c'est-à-dire voice() . Cela signifie que la méthode voice est remplacée par la sous-classe. Exécutez le programme ci-dessous pour savoir comment le mot-clé super est nécessaire pour utiliser les méthodes de la classe parent dans la classe enfant.

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();
	}
}
Sortir
Constructeur paramétré Shape() appelé ! Constructeur paramétré Triangle() appelé ! Triangle Alpha Jaune

Conclusion

À la fin de cet article, nous espérons que vous serez en mesure de comprendre le fonctionnement du mot-clé super en Java. Nous vous encourageons à apprendre le codage par la pratique. Comme la pratique est la clé ultime pour apprendre la construction logique. Ce poste vous accueillera de toute façon chaque fois que vous serez bloqué. D'ici là, bon apprentissage !
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION