CodeGym /Java blog /Tilfældig /Super nøgleord i Java
John Squirrels
Niveau
San Francisco

Super nøgleord i Java

Udgivet i gruppen
Super søgeordet bruges i forskellige situationer. Før du går i gang med dette indlæg, opfordrer vi dig til at lære om arv i Java for en bedre forståelse.

Hvad er supernøgleordet i Java?

Super er et nøgleord, der kan bruges til at påkalde tilsidesatte metoder i superklassen, samt til at henvise til skjulte felter i superklassen.

Hvorfor og hvornår skal man bruge supersøgeordet?

Java super nøgleordet har tre eksplicitte anvendelser.
  1. Få adgang til datamedlemmerne i den overordnede klasse, når den underordnede klasse også har datamedlemmer med samme navn.
  2. Kald standard- eller parameterkonstruktørerne for den overordnede klasse i den underordnede klasse.
  3. Kald forældreklassens metoder i underklassen, hvis barnet har tilsidesat metoder.
Lad os forstå alle ovenstående tre tilfælde ved hjælp af eksempler.

Eksempel 1 - Få adgang til forældrenes datamedlemmer

Eksempel 1 illustrerer, hvordan attributterne eller datamedlemmerne i køretøjsklassen kan tilgås i underklassen Biltype . Sørg for at køre uddraget nedenfor for at forstå det godt.

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();
	}
}
Produktion
Min bils navn: bil Mit moderkøretøjs navn: køretøj

Eksempel 2 - Få adgang til forældrenes konstruktører i børneklassen

Eksplicit at kalde super() giver dig adgang til både standard- eller parameterkonstruktøren for den overordnede klasse i den underordnede klasse. Her er et eksempel på den parametriserede konstruktør. Forælderen dvs. Shape -klassens konstruktør kaldes (ved hjælp af super() ) i den underordnede dvs. Trekant- klassen for at indstille attributterne. Kør programmet nedenfor for at teste outputtet for dig selv.

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);
	}
}
Produktion
Shape() parameteriseret konstruktør kaldet! Triangle() parameteriseret konstruktør kaldet! Trekant Alpha Gul
Hurtig udfordring : Redesign ovenstående program ved at bruge standardkonstruktøren til at teste din læring. Se også, hvordan super() er forskellig fra super(arg) .

Eksempel 3 - Få adgang til forælderens tilsidesatte metode i børneklassen

Eksempel 3 viser, hvordan du kan få adgang til metoderne for forældrenes klasse, som børneklassen også definerer. Forælderklassen Sound i programmet nedenfor definerer en metode voice() . Barneklassen Drum har også en metode med samme navn, dvs voice() . Det betyder, at metodestemmen tilsidesættes af underklassen. Kør programmet nedenfor for at lære, hvordan supernøgleordet er nødvendigt for at bruge forældreklassens metoder i underklassen.

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();
	}
}
Produktion
Shape() parameteriseret konstruktør kaldet! Triangle() parameteriseret konstruktør kaldet! Trekant Alpha Gul

Konklusion

Ved slutningen af ​​dette indlæg håber vi, at du vil være i stand til at forstå, hvordan supersøgeordet fungerer i Java. Vi opfordrer dig til at lære kodning ved at øve dig. Da praksis er den ultimative nøgle til at lære logikbygning. Dette indlæg byder dig alligevel velkommen, når du går i stå. Indtil da, god læring!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION