Le mot-clé super en Java est utilisé pour faire référence à l'objet parent immédiat de la classe. Il est généralement utilisé pour accéder aux méthodes et aux constructeurs de la classe mère, ce qui permet à une sous-classe d'hériter et de réutiliser les fonctionnalités de sa superclasse.
Utilisation
Le mot-clé super peut être utilisé dans trois contextes principaux :
Pour appeler le constructeur de la superclasse.
Pour accéder à une méthode de la superclasse qui a été surchargée dans la sous-classe.
Pour accéder à un champ de la superclasse lorsqu'il est caché par un champ du même nom dans la sous-classe.
Syntax
super();super.methodName();super.fieldName;Propulsé par
Exemples
Exemple 1 : Appel du constructeur de la superclasse
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}}Propulsé par
Dans cet exemple, l'appel à super() dans le constructeur de Dog invoque le constructeur de la classe Animal.
Exemple 2 : Accès à la méthode de la 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}}Propulsé par
Ici, l'appel super.sound() dans la méthode sound() de la classe Dog invoque la méthode sound() de la classe Animal.
Exemple 3 : Accès au champ de la 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}}Propulsé par
Dans cet exemple, super.color est utilisé pour accéder au champ color de la classe Animal, qui est caché par le champ color de la classe Dog.
Conseils et bonnes pratiques
Enchaînement de constructeurs: Utilisez super() dans le constructeur d'une sous-classe pour vous assurer que le constructeur de la superclasse est appelé, ce qui permet d'initialiser correctement l'objet.
classParent{Parent(){
System.out.println("Parent constructor");}}classChildextendsParent{Child(){super();// Always the first statement in the constructor
System.out.println("Child constructor");}}Propulsé par
Surcharge de méthode: Utilisez super.methodName() pour appeler une méthode de la superclasse lorsqu'elle est surchargée dans la sous-classe. Ceci est utile pour étendre ou modifier le comportement de la méthode héritée.
classParent{voiddisplay(){
System.out.println("Parent display");}}classChildextendsParent{voiddisplay(){super.display();// Calls Parent's display method
System.out.println("Child display");}}Propulsé par
Accès au terrain: Utilisez super.fieldName pour accéder à un champ de la superclasse lorsqu'il est masqué par un champ du même nom dans la sous-classe. Cela permet d'éviter toute ambiguïté et de s'assurer que l'on accède au bon champ.
classParent{
int number =10;}classChildextendsParent{
int number =20;voidshowNumber(){
System.out.println(super.number);// Accesses Parent's number}}Propulsé par
Lisibilité: Utilisez judicieusement super pour rendre votre code plus lisible et plus facile à maintenir. L'utilisation excessive de super peut rendre le code plus difficile à comprendre.
Placement dans les constructeurs: Pour éviter les erreurs de compilation, placez toujours l'appel à super() comme première instruction dans le constructeur de la sous-classe.
Contextes statiques: N'oubliez pas que super ne peut pas être utilisé dans des méthodes statiques ou des contextes statiques, car il fait référence à une instance d'une classe.
Le mot-clé
superen Java est utilisé pour faire référence à l'objet parent immédiat de la classe. Il est généralement utilisé pour accéder aux méthodes et aux constructeurs de la classe mère, ce qui permet à une sous-classe d'hériter et de réutiliser les fonctionnalités de sa superclasse.Utilisation
Le mot-clé
superpeut être utilisé dans trois contextes principaux :Syntax
Exemples
Exemple 1 : Appel du constructeur de la superclasse
Dans cet exemple, l'appel à
super()dans le constructeur deDoginvoque le constructeur de la classeAnimal.Exemple 2 : Accès à la méthode de la superclasse
Ici, l'appel
super.sound()dans la méthodesound()de la classeDoginvoque la méthodesound()de la classeAnimal.Exemple 3 : Accès au champ de la superclasse
Dans cet exemple,
super.colorest utilisé pour accéder au champcolorde la classeAnimal, qui est caché par le champcolorde la classeDog.Conseils et bonnes pratiques
super()dans le constructeur d'une sous-classe pour vous assurer que le constructeur de la superclasse est appelé, ce qui permet d'initialiser correctement l'objet.super.methodName()pour appeler une méthode de la superclasse lorsqu'elle est surchargée dans la sous-classe. Ceci est utile pour étendre ou modifier le comportement de la méthode héritée.super.fieldNamepour accéder à un champ de la superclasse lorsqu'il est masqué par un champ du même nom dans la sous-classe. Cela permet d'éviter toute ambiguïté et de s'assurer que l'on accède au bon champ.superpour rendre votre code plus lisible et plus facile à maintenir. L'utilisation excessive desuperpeut rendre le code plus difficile à comprendre.super()comme première instruction dans le constructeur de la sous-classe.superne peut pas être utilisé dans des méthodes statiques ou des contextes statiques, car il fait référence à une instance d'une classe.