A szuper kulcsszót különböző helyzetekben használják. Mielőtt elkezdené ezt a bejegyzést, javasoljuk, hogy ismerje meg a Java öröklését a jobb megértés érdekében.
Mi a szuper kulcsszó a Java nyelven?
A Super egy olyan kulcsszó, amely a szuperosztály felülírt metódusainak meghívására, valamint a szuperosztály rejtett mezőire való hivatkozásra használható.Miért és mikor kell használni a szuper kulcsszót?
A Java szuper kulcsszónak három kifejezett felhasználása van.- Hozzáférés a szülőosztály adattagjaihoz, ha az utódosztálynak is vannak azonos nevű adattagjai.
- Hívja meg a szülőosztály alapértelmezett vagy paraméterezett konstruktorait a gyermekosztályban.
- Hívja meg a szülő osztály metódusait az utódosztályban, ha a gyermek felülbírált metódusokkal rendelkezik.
1. példa – Hozzáférés a szülő adattagjaihoz
Az 1. példa szemlélteti, hogy a Jármű osztály attribútumai vagy adattagjai hogyan érhetők el az Autó típusú gyermekosztályban. Győződjön meg róla, hogy futtassa az alábbi részletet, hogy jól megértse.
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();
}
}
Kimenet
Autóm neve: autó Szülőm járműve neve: jármű
2. példa – A szülő konstruktorainak elérése a gyermekosztályban
A super() kifejezett meghívása lehetővé teszi a szülőosztály alapértelmezett vagy paraméterezett konstruktorának elérését a gyermekosztályban. Íme egy példa a paraméterezett konstruktorra. Az attribútumok beállításához a szülő, azaz a Shape osztály konstruktorát ( super() használatával ) hívjuk meg a gyermek, azaz a Triangle osztályban. Futtassa az alábbi programot, hogy saját maga tesztelje a kimenetet.
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);
}
}
Kimenet
Shape() paraméterezett konstruktor meghívva! Triangle() paraméterezett konstruktor meghívva! Háromszög Alfa sárga
Gyors kihívás : Tervezd újra a fenti programot az alapértelmezett konstruktor használatával a tanulás tesztelésére. Nézze meg azt is, hogy a super() miben különbözik a super(arg) -tól .
3. példa – Hozzáférés a szülő felülírt metódusához a gyermekosztályban
A 3. példa bemutatja, hogyan érheti el a szülő osztály metódusait, amelyeket a gyermekosztály is meghatároz. Az alábbi programban a Sound szülőosztály a voice() metódusát határozza meg . A Drum gyermekosztálynak is van egy azonos nevű metódusa, azaz a voice() . Ez azt jelenti, hogy a metódus hangját az alosztály felülírja. Futtassa az alábbi programot, hogy megtudja, hogyan szükséges a szuper kulcsszó a szülőosztály metódusainak használatához a gyermekosztályban.
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();
}
}
Kimenet
Shape() paraméterezett konstruktor meghívva! Triangle() paraméterezett konstruktor meghívva! Háromszög Alfa sárga
GO TO FULL VERSION