CodeGym /Java блог /Случаен /Супер ключова дума в Java
John Squirrels
Ниво
San Francisco

Супер ключова дума в Java

Публикувано в групата
Ключовата дума super се използва в различни ситуации. Преди да започнете с тази публикация, препоръчваме ви да научите за наследяването в Java за по-добро разбиране.

Коя е ключовата дума super в Java?

Super е ключова дума, която може да се използва за извикване на заменени методи на суперкласа, Howто и за препратка към скрити полета на суперкласа.

Защо и кога да използваме ключовата дума super?

Ключовата дума Java super има три изрични applications.
  1. Достъп до членовете данни на родителския клас, когато дъщерният клас също има членове данни със същото име.
  2. Извикайте конструкторите по подразбиране or параметризираните конструктори на родителския клас в дъщерния клас.
  3. Извикайте методите на родителския клас в дъщерния клас, ако детето има заместени методи.
Нека разберем всички от горните три случая с помощта на примери.

Пример 1 - Достъп до членовете на данните на родителя

Пример 1 илюстрира How атрибутите or членовете на данните на класа Vehicle могат да бъдат достъпни в дъщерния клас тип Car . Уверете се, че изпълнявате фрагмента по-долу, за да разберете добре.

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();
	}
}
Изход
Името на моята кола: кола Името на моето родителско превозно средство: превозно средство

Пример 2 - Достъп до конструкторите на родител в дъщерен клас

Изричното извикване на super() ви позволява да получите достъп Howто до конструктора по подразбиране, така и до параметризирания конструктор на родителския клас в дъщерния клас. Ето пример за параметризиран конструктор. Конструкторът на родителския, т.е. клас Shape , се извиква (използвайки super() ) в дъщерния, т.е. клас Triangle , за да зададе атрибутите. Стартирайте програмата по-долу, за да тествате изхода сами.

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);
	}
}
Изход
Извикан параметризиран конструктор Shape()! Извикан параметризиран конструктор на Triangle()! Триъгълник алфа жълто
Бързо предизвикателство : Преработете горната програма, като използвате конструктора по подразбиране, за да тествате обучението си. Освен това вижте How super() е различен от super(arg) .

Пример 3 - Достъп до заместения метод на родителя в дъщерен клас

Пример 3 показва How можете да получите достъп до методите на родителския клас, които дъщерният клас също дефинира. Родителският клас Sound в програмата по-долу дефинира метод voice() . Дъщерният клас Drum също има метод със същото име, т.е. voice() . Това означава, че гласът на метода е заменен от подкласа. Стартирайте програмата по-долу, за да научите How ключовата дума super е необходима за използване на методите на родителския клас в дъщерния клас.

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();
	}
}
Изход
Извикан параметризиран конструктор Shape()! Извикан параметризиран конструктор на Triangle()! Триъгълник алфа жълто

Заключение

До края на тази публикация се надяваме, че ще можете да разберете работата на ключовата дума super в Java. Препоръчваме ви да научите codeиране чрез практика. Тъй като практиката е крайният ключ към изграждането на логика. Тази публикация ще ви приветства така or иначе, когато се затрудните. Дотогава, приятно учене!
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION