Cuvântul cheie super este folosit în diferite situații. Înainte de a începe cu această postare, vă încurajăm să aflați despre moștenirea în Java pentru o mai bună înțelegere.
Care este cuvântul cheie super în Java?
Super este un cuvânt cheie care poate fi folosit pentru a invoca metode suprascrise ale superclasei, precum și pentru a se referi la câmpurile ascunse ale superclasei.De ce și când să folosiți cuvântul cheie super?
Cuvântul cheie super Java are trei utilizări explicite.- Accesați membrii de date ai clasei părinte atunci când clasa copil are și membri de date cu același nume.
- Apelați constructorii impliciti sau parametrizați ai clasei părinte din clasa copil.
- Apelați metodele clasei părinte din clasa copil dacă copilul are metode suprascrise.
Exemplul 1 - Accesați membrii datelor părintelui
Exemplul 1 ilustrează modul în care atributele sau membrii datelor din clasa Vehicule pot fi accesați în clasa copil de tip Mașină . Asigurați-vă că rulați fragmentul de mai jos pentru a înțelege bine.
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();
}
}
Ieșire
Numele mașinii mele: mașină Numele vehiculului meu părinte: vehicul
Exemplul 2 - Accesați constructorii părintelui în clasa copil
Apelarea explicită a super() vă permite să accesați atât constructorul implicit, cât și cel parametrizat al clasei părinte din clasa copil. Iată un exemplu de constructor parametrizat. Constructorul clasei Shape este apelat (folosind super() ) în clasa secundară, adică Triangle , pentru a seta atributele. Rulați programul de mai jos pentru a testa singur rezultatul.
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);
}
}
Ieșire
Constructor parametrizat Shape() numit! Constructor parametrizat Triangle() numit! Triunghi Alfa Galben
Provocare rapidă : Reproiectați programul de mai sus utilizând constructorul implicit pentru a vă testa învățarea. De asemenea, vedeți cum super() este diferit de super(arg) .
Exemplul 3 - Accesați metoda suprascrisă a părintelui în clasa copil
Exemplul 3 arată cum puteți accesa metodele clasei părinte pe care le definește și clasa copil. Clasa părinte Sound din programul de mai jos definește o metodă voice() . Clasa copil Drum are și o metodă cu același nume, adică voice() . Înseamnă că vocea metodei este suprascrisă de subclasă. Rulați programul de mai jos pentru a afla cum este necesar cuvântul cheie super pentru a utiliza metodele clasei părinte în clasa copil.
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();
}
}
Ieșire
Constructor parametrizat Shape() numit! Constructor parametrizat Triangle() numit! Triunghi Alfa Galben
GO TO FULL VERSION