CodeGym /Java blogg /Slumpmässig /Supernyckelord i Java
John Squirrels
Nivå
San Francisco

Supernyckelord i Java

Publicerad i gruppen
Supernyckelordet används i olika situationer . Innan du börjar med det här inlägget uppmuntrar vi dig att lära dig om arv i Java för en bättre förståelse.

Vad är supernyckelordet i Java?

Super är ett nyckelord som kan användas för att anropa åsidosatta metoder för superklassen, samt för att referera till dolda fält i superklassen.

Varför och när ska man använda supersökordet?

Java supernyckelordet har tre explicita användningsområden.
  1. Få åtkomst till datamedlemmarna i den överordnade klassen när den underordnade klassen också har datamedlemmar med samma namn.
  2. Anropa standard- eller parametriserade konstruktorer för den överordnade klassen i den underordnade klassen.
  3. Anropa föräldraklassmetoderna i underklassen om barnet har åsidosatta metoder.
Låt oss förstå alla ovanstående tre fall med hjälp av exempel.

Exempel 1 - Åtkomst till förälderns datamedlemmar

Exempel 1 illustrerar hur attributen eller datamedlemmarna i fordonsklassen kan nås i underklassen Biltyp . Se till att du kör utdraget nedan för att förstå 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();
	}
}
Produktion
Min bils namn: bil Min moderbils namn: fordon

Exempel 2 - Åtkomst till förälderns konstruktörer i underordnad klass

Att explicit anropa super() ger dig åtkomst till både standardkonstruktorn eller parametriserad konstruktor för den överordnade klassen i den underordnade klassen. Här är ett exempel på den parametriserade konstruktorn. Föräldern, dvs. Shape -klassens konstruktor, anropas (med super() ) i den underordnade, dvs. Triangle -klassen, för att ställa in attributen. Kör programmet nedan för att testa resultatet själv.

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() parametriserad konstruktor anropad! Triangle() parametriserad konstruktor anropad! Triangel Alpha Gul
Snabb utmaning : Gör om programmet ovan genom att använda standardkonstruktorn för att testa din inlärning. Se också hur super() skiljer sig från super(arg) .

Exempel 3 - Åtkomst till förälderns åsidosatta metod i barnklass

Exempel 3 visar hur du kan komma åt metoderna för förälders klass som barnklassen också definierar. Förälderklassen Sound i programmet nedan definierar en metod voice() . Barnklassen Drum har också en metod med samma namn, dvs voice() . Det betyder att metodrösten åsidosätts av underklassen. Kör programmet nedan för att lära dig hur supernyckelordet är nödvändigt för att använda föräldraklassens 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() parametriserad konstruktor anropad! Triangle() parametriserad konstruktor anropad! Triangel Alpha Gul

Slutsats

I slutet av det här inlägget hoppas vi att du kommer att kunna förstå hur supernyckelordet fungerar i Java. Vi uppmuntrar dig att lära dig kodning genom att träna. Som praktik är den ultimata nyckeln till att lära sig logikbyggande. Det här inlägget välkomnar dig ändå när du fastnar. Tills dess, lycka till med lärandet!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION