CodeGym /จาวาบล็อก /สุ่ม /ซุปเปอร์คีย์เวิร์ดใน Java
John Squirrels
ระดับ
San Francisco

ซุปเปอร์คีย์เวิร์ดใน Java

เผยแพร่ในกลุ่ม
คำ หลัก superใช้ในสถานการณ์ต่างๆ ก่อนเริ่มโพสต์นี้ เราขอแนะนำให้คุณเรียนรู้เกี่ยวกับการสืบทอดใน Java เพื่อความเข้าใจที่ดีขึ้น

super คำหลักใน Java คืออะไร

Superคือคีย์เวิร์ดที่สามารถใช้เพื่อเรียกใช้เมธอดที่ถูกแทนที่ของ superclass รวมถึงอ้างถึงฟิลด์ที่ซ่อนอยู่ของ superclass

ทำไมและเมื่อใดจึงควรใช้คำหลัก super

คีย์เวิร์ด Java superมีการใช้งานที่ชัดเจนสามประการ
  1. เข้าถึงสมาชิกข้อมูลของคลาสพาเรนต์เมื่อคลาสย่อยมีสมาชิกข้อมูลที่มีชื่อเดียวกันด้วย
  2. เรียกใช้ตัวสร้างเริ่มต้นหรือตัวสร้างพารามิเตอร์ของคลาสพาเรนต์ในคลาสย่อย
  3. เรียกใช้เมธอดคลาสพาเรนต์ในคลาสลูก ถ้าลูกมีเมธอดที่ถูกแทนที่
ให้เราเข้าใจทั้งสามกรณีข้างต้นโดยใช้ความช่วยเหลือจากตัวอย่าง

ตัวอย่างที่ 1 - เข้าถึงสมาชิกข้อมูลของผู้ปกครอง

ตัวอย่างที่ 1 แสดงให้เห็นว่าแอตทริบิวต์หรือสมาชิกข้อมูลของ คลาส ยานพาหนะสามารถเข้าถึงได้อย่างไรในคลาสย่อยประเภทรถยนต์ ตรวจสอบว่าคุณเรียกใช้ตัวอย่างข้อมูลด้านล่างเพื่อให้เข้าใจได้ดี

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()อย่างชัดเจนช่วยให้คุณเข้าถึงทั้งตัวสร้างเริ่มต้นหรือตัวสร้างพารามิเตอร์ของคลาสพาเรนต์ในคลาสย่อย นี่คือตัวอย่างของตัวสร้างพารามิเตอร์ ตัวสร้างคลาส ie Shapeของพาเรนต์ถูกเรียก (โดยใช้super() ) ในคลาสย่อย ie 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() เรียกว่า! สามเหลี่ยมอัลฟ่าสีเหลือง
Quick Challenge : ออกแบบโปรแกรมด้านบนใหม่โดยใช้ตัวสร้างเริ่มต้นเพื่อทดสอบการเรียนรู้ของคุณ ดูว่าsuper()แตกต่างจากsuper(arg)อย่างไร

ตัวอย่างที่ 3 - เข้าถึงเมธอด overridden ของพาเรนต์ในคลาสย่อย

ตัวอย่างที่ 3 แสดงวิธีการเข้าถึงเมธอดของคลาสพาเรนต์ที่คลาสย่อยกำหนด คลาสพาเรนต์Soundในโปรแกรมด้านล่างกำหนดเมธอดvoice( ) Drumคลาสลูกยังมีเมธอดชื่อเดียวกันคือvoice( ) หมายความว่าเสียง เมธอด ถูกแทนที่โดยคลาสย่อย เรียกใช้โปรแกรมด้านล่างเพื่อเรียนรู้ว่าsuper keyword จำเป็นอย่างไรในการใช้เมธอดของคลาสพาเรนต์ในคลาสย่อย

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 keyword ใน Java ได้ เราสนับสนุนให้คุณเรียนรู้การเข้ารหัสโดยการฝึกฝน เนื่องจากการฝึกฝนเป็นกุญแจสำคัญในการเรียนรู้การสร้างตรรกะ โพสต์นี้จะยินดีต้อนรับคุณเมื่อใดก็ตามที่คุณติดขัด ถึงตอนนั้น ขอให้มีความสุขกับการเรียนรู้!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION