CodeGym /Java-Blog /Germany /Super-Schlüsselwort in Java
Autor
John Selawsky
Senior Java Developer and Tutor at LearningTree

Super-Schlüsselwort in Java

Veröffentlicht in der Gruppe Germany
Das super-Schlüsselwort wird in verschiedenen Situationen verwendet. Bevor du diesen Beitrag liest, empfehlen wir dir, dich mit dem Thema Vererbung in Java zu beschäftigen, damit du alles besser verstehst.

Was ist das Schlüsselwort super in Java?

super ist ein Schlüsselwort, das verwendet werden kann, um überschriebene Methoden der Oberklasse aufzurufen und um auf versteckte Felder der Oberklasse zu verweisen.

Warum und wann sollte man das Schlüsselwort super verwenden?

Das Java-Schlüsselwort super hat drei explizite Verwendungsbereiche.
  1. Zugriff auf die Datenelemente der Elternklasse, wenn die Kindklasse ebenfalls Datenelemente mit demselben Namen hat.
  2. Aufruf der Standard- oder parametrisierten Konstruktoren der Elternklasse in der Kindklasse.
  3. Aufruf der Methoden der Elternklasse in der Kindklasse, wenn die Kindklasse Methoden überschrieben hat.
Lass uns die drei oben genannten Fälle anhand von Beispielen nachvollziehen.

Beispiel 1 – Zugriff auf die Datenelemente der Eltern

Beispiel 1 veranschaulicht, wie auf die Attribute oder Datenelemente der Klasse Vehicle in der Unterklasse Carzugegriffen werden kann. Um das zu verstehen, musst du den folgenden Code ausführen.

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();
	}
}
Ausgabe
Der Name meines Autos: Auto Der Name meines Elternfahrzeugs: Fahrzeug

Beispiel 2 – Zugriff auf die Konstruktoren der Elternklasse in der Kindklasse

Durch den expliziten Aufruf von super() kannst du in der Kindklasse sowohl auf den Standard- als auch auf den parametrisierten Konstruktor der Elternklasse zugreifen. Hier ist ein Beispiel für einen parametrisierten Konstruktor. Der Konstruktor der übergeordneten Klasse Shape wird (mit super()) in der untergeordneten Klasse Triangle aufgerufen, um die Attribute zu setzen. Führe das folgende Programm aus, um die Ausgabe selbst zu testen.

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);
	}
}
Ausgabe
Parametrisierter Shape()-Konstruktor aufgerufen! Parametrisierter Triangle()-Konstruktor aufgerufen! Dreieck Alpha Gelb
Schnelle Herausforderung: Um dein Wissen zu testen, überarbeite das obige Programm, indem du den Standardkonstruktor verwendest. Siehe auch, wie sich super() von super(arg) unterscheidet.

Beispiel 3 – Zugriff auf die überschriebene Methode der Elternklasse in der Kindklasse

Beispiel 3 zeigt, wie du auf die Methoden der Elternklasse zugreifen kannst, die auch von der Kindklasse definiert werden. Die übergeordnete Klasse Sound in dem folgenden Programm definiert eine Methode voice(). Die Kindklasse Drum hat auch eine Methode mit demselben Namen, nämlich voice(). Das bedeutet, dass die Methode voice von der Unterklasse überschrieben wird. Führe das folgende Programm aus, um zu sehen, dass das Schlüsselwort super notwendig ist, um die Methoden der Elternklasse in der Kindklasse zu verwenden.

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();
	}
}
Ausgabe
Parametrisierter Shape()-Konstruktor aufgerufen! Parametrisierter Triangle()-Konstruktor aufgerufen! Dreieck Alpha Gelb
Super-Schlüsselwort in Java - 1

Fazit

Wir hoffen, dass du am Ende dieses Beitrags die Funktionsweise des super-Schlüsselworts in Java verstanden hast. Am besten lernst du Programmieren durch Übung. Denn Übung ist der ultimative Schlüssel zum Erlernen der Logik hinter der Programmierung. Dieser Beitrag hilft dir immer dann, wenn du nicht weiterkommst. Bis dahin: Viel Spaß beim Lernen!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION