CodeGym /Java-blogg /Tilfeldig /Super nøkkelord i Java
John Squirrels
Nivå
San Francisco

Super nøkkelord i Java

Publisert i gruppen
Supernøkkelordet brukes i ulike situasjoner . Før du begynner med dette innlegget oppfordrer vi deg til å lære om arv i Java for en bedre forståelse.

Hva er supernøkkelordet i Java?

Super er et nøkkelord som kan brukes til å påkalle overstyrte metoder for superklassen, samt for å referere til skjulte felt i superklassen.

Hvorfor og når skal jeg bruke supersøkeordet?

Java- supernøkkelordet har tre eksplisitte bruksområder.
  1. Få tilgang til datamedlemmene til den overordnede klassen når den underordnede klassen også har datamedlemmer med samme navn.
  2. Kalle standard eller parameteriserte konstruktører for den overordnede klassen i underklassen.
  3. Kall opp foreldreklassemetodene i barneklassen hvis barnet har overstyrte metoder.
La oss forstå alle de tre tilfellene ovenfor ved hjelp av eksempler.

Eksempel 1 - Få tilgang til foreldrenes datamedlemmer

Eksempel 1 illustrerer hvordan attributtene eller datamedlemmene til kjøretøyklassen kan nås i barneklassen Biltype . Pass på at du kjører utdraget nedenfor for å forstå det.

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();
	}
}
Produksjon
Min bils navn: bil Mitt overordnede kjøretøys navn: kjøretøy

Eksempel 2 - Få tilgang til foreldrenes konstruktører i barneklassen

Eksplisitt oppkalling av super() lar deg få tilgang til både standard eller parameterisert konstruktør for overordnet klasse i underklassen. Her er et eksempel på den parameteriserte konstruktøren. Konstruktøren til den overordnede dvs. Shape -klassen kalles (ved å bruke super() ) i underordnet dvs. Triangle- klassen for å angi attributtene. Kjør programmet nedenfor for å teste utdataene 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);
	}
}
Produksjon
Shape() parameterisert konstruktør kalt! Triangle() parameterisert konstruktør kalt! Trekant Alfa Gul
Rask utfordring : Redesign programmet ovenfor ved å bruke standardkonstruktøren for å teste læringen din. Se også hvordan super() er forskjellig fra super(arg) .

Eksempel 3 - Få tilgang til forelderens overstyrte metode i barneklassen

Eksempel 3 viser hvordan du kan få tilgang til metodene for foreldrenes klasse som barneklassen også definerer. Foreldreklassen Sound i programmet nedenfor definerer en metode voice() . Barneklassen Drum har også en metode med samme navn, dvs. voice() . Det betyr at metodestemmen overstyres av underklassen. Kjør programmet nedenfor for å lære hvordan supernøkkelordet er nødvendig for å bruke foreldreklassens metoder i barneklassen.

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();
	}
}
Produksjon
Shape() parameterisert konstruktør kalt! Triangle() parameterisert konstruktør kalt! Trekant Alfa Gul

Konklusjon

På slutten av dette innlegget håper vi at du vil være i stand til å forstå hvordan supernøkkelordet fungerer i Java. Vi oppfordrer deg til å lære koding ved å øve. Som praksis er den ultimate nøkkelen til å lære logikkbygging. Dette innlegget vil ønske deg velkommen uansett når du står fast. Inntil da, god læring!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION