ความแตกต่างที่สำคัญ – สิ่งนี้เทียบกับซุปเปอร์ใน Java
คีย์เวิร์ด 'this' และ 'super' ใช้ในการเขียนโปรแกรม Java ไม่สามารถใช้คีย์เวิร์ดเหล่านี้เป็นตัวแปรหรือชื่อตัวระบุอื่นๆ Java รองรับการเขียนโปรแกรมเชิงวัตถุ (OOP) โปรแกรมหรือซอฟต์แวร์สามารถสร้างแบบจำลองโดยใช้วัตถุ ออบเจ็กต์นั้นไม่เพียงพอโดยใช้คลาส เสาหลักของ OOP คือมรดก มันให้รหัสนำกลับมาใช้ใหม่ได้ คลาสที่มีอยู่แล้วคือซูเปอร์คลาส และคลาสที่ได้รับคือคลาสย่อย คีย์เวิร์ด super สามารถใช้เพื่ออ้างถึงอ็อบเจ็กต์ของ superclass มีหลายอ็อบเจ็กต์ในระบบ คำหลัก 'นี้' ใช้เพื่ออ้างถึงวัตถุปัจจุบันความแตกต่างที่สำคัญระหว่าง this และ super คือ 'this' คือตัวแปรอ้างอิงที่ใช้เพื่ออ้างอิงวัตถุปัจจุบันในขณะที่ 'super' เป็นตัวแปรอ้างอิงที่ใช้เพื่ออ้างอิงวัตถุ superclass ทันที
นี่คืออะไรในภาษาจาวา
คำหลัก 'นี้' ใช้เพื่ออ้างอิงวัตถุปัจจุบัน อ้างถึงโปรแกรม Java ที่กำหนด
รูปที่ 01: โปรแกรม Java ที่ใช้คำสำคัญนี้
ใน Java มีตัวแปรสามประเภท พวกมันคือตัวแปรอินสแตนซ์ ตัวแปรโลคัล และตัวแปรคลาส ตามโปรแกรมข้างต้น class Employee มีตัวแปรอินสแตนซ์สองตัว พวกเขาเป็นรหัสและชื่อ ตัวแปรโลคัลคือตัวแปรที่เป็นของเมธอด ตัวแปรคลาสใช้ร่วมกันโดยอ็อบเจ็กต์ทั้งหมด รหัสและชื่อจะถูกส่งต่อไปยังตัวสร้างพนักงาน หากโปรแกรมเมอร์เขียน id=id; จะไม่เริ่มต้นตัวแปรอินสแตนซ์เนื่องจากตัวสร้างมีรหัสและชื่ออยู่แล้วไม่มีค่าสำหรับตัวแปรอินสแตนซ์ ดังนั้นการพิมพ์จะแสดงเป็นโมฆะ เมื่อใช้สิ่งนี้จะหมายถึงวัตถุปัจจุบัน ดังนั้น การให้ ID และชื่อแก่ Constructor สามารถตั้งค่าตัวแปรอินสแตนซ์ได้
คำหลัก 'นี้' สามารถใช้เพื่อเรียกวิธีการเรียนปัจจุบัน อ้างถึงโปรแกรมจาวาที่กำหนด
คลาสสาธารณะ สาธิตนี้{
public static void main(สตริง args){
Myclass myClass=myclass ใหม่();
myClass. B();
}
}
คลาส Myclass{
โมฆะสาธารณะ A(){
System.out.println(“A”);
}
โมฆะสาธารณะ B(){
System.out.prinltn(“B”);
นี้. A();
}
}
คลาส Myclass มีสองวิธี เป็นวิธี A และ B เมื่อสร้างวัตถุของ Myclass และเรียกใช้วิธี B จะพิมพ์ B A เป็นผลลัพธ์ ในวิธี B หลังจากพิมพ์ B จะมีคำสั่งดังนี้ A() เมื่อใช้วิธีนี้ คลาสปัจจุบันก็ถูกเรียกใช้
มันเป็นไปได้ที่จะใช้คำสำคัญนี้เพื่อเรียกใช้ตัวสร้างคลาสปัจจุบัน อ้างอิงโปรแกรมที่กำหนด
คลาสสาธารณะ สาธิตนี้{
public static void main(สตริง args){
A obj=ใหม่ A(5);
}
}
คลาส A{
สาธารณะ A(){
System.out.println(“ตัวสร้าง A”);
}
สาธารณะ A(int x){
นี่();
System.out.println(“ตัวสร้างพารามิเตอร์ A”);
}
}
ตามโปรแกรมข้างต้น คลาส A มีตัวสร้างเริ่มต้นและตัวสร้างพารามิเตอร์ เมื่อสร้างวัตถุของ A ตัวสร้างพารามิเตอร์จะถูกเรียก ในตัวสร้างพารามิเตอร์ มีคำสั่งเช่นนี้ (); มันจะเรียกตัวสร้างคลาสปัจจุบันที่เป็น A().
Java คืออะไร
คำสำคัญ 'super' เกี่ยวข้องกับการสืบทอด การสืบทอดเป็นแนวคิดหลักของการเขียนโปรแกรมเชิงวัตถุ อนุญาตให้ใช้คุณสมบัติและเมธอดของคลาสที่มีอยู่แล้วกับคลาสใหม่ คลาสที่มีอยู่แล้วเรียกว่าคลาสพาเรนต์หรือซูเปอร์คลาส คลาสใหม่เรียกว่าคลาสย่อยหรือคลาสย่อย
'super' เป็นตัวแปรอ้างอิงที่ใช้อ้างอิงอ็อบเจกต์คลาสพาเรนต์ในทันที คีย์เวิร์ด super สามารถอ้างถึงตัวแปรอินสแตนซ์คลาสพาเรนต์ทันทีหรือเรียกใช้เมธอดคลาสพาเรนต์ทันที super() ใช้เพื่อเรียกใช้ตัวสร้างคลาสหลักทันที
สมมติว่ามีสองคลาสเป็น A และ B คลาส A เป็นซูเปอร์คลาส และคลาส B เป็นคลาสย่อย คลาส A, B มีวิธีแสดงผลทั้งคู่
สาธารณะ A{
แสดงโมฆะสาธารณะ(){
System.out.println(“A”);
}
}
ขยายคลาส B สาธารณะ A{
แสดงโมฆะสาธารณะ(){
System.out.println(“B”);
}
}
เมื่อสร้างอ็อบเจ็กต์ประเภท B และเรียกใช้เมธอด display จะให้เอาต์พุต B. คลาส A มีวิธีการแสดงผล แต่ถูกแทนที่โดยเมธอดการแสดงคลาสย่อย B หากโปรแกรมเมอร์ต้องการเรียกวิธีการแสดงผลในคลาส A เขาสามารถใช้คีย์เวิร์ด super ได้ อ้างถึงโปรแกรม Java ที่กำหนด
รูปที่ 02: โปรแกรม Java ที่ใช้ super keyword
ตามโปรแกรมข้างบนนี้ คลาส A มีตัวแปรชื่อ number ที่มีค่า 10 คลาส B ขยาย A และมีตัวแปรชื่อ number ที่มีค่า 20 โดยทั่วไปเมื่อสร้างอ็อบเจ็กต์ประเภท B และเรียกวิธีการแสดง ควรให้ตัวเลขในคลาสย่อยเนื่องจากค่า superclass ถูกแทนที่โดยคลาสใหม่โดยใช้ super.num ค่าหมายเลข superclass จะถูกพิมพ์
super() สามารถใช้เรียกตัวสร้าง superclass ได้ อ้างอิงโปรแกรมด้านล่าง
ชั้นเรียนสาธารณะ หลัก {
public static void main(สตริง args){
B obj=ใหม่ B();
}
}
คลาส A{
A(){
System.out.println(“A”);
}
}
คลาส B ขยาย A{
B(){
super();
System.out.println(“B”);
}
}
ตามโปรแกรมข้างต้น คลาส A มีตัวสร้าง A () คลาส B มีคอนสตรัคเตอร์ B () คลาส B ขยายคลาส A เมื่อสร้างวัตถุประเภท B มันจะพิมพ์ A, B เป็นเอาต์พุต ตัวสร้าง B () มี super () ดังนั้น อันดับแรก คอนสตรัคเตอร์ A จะถูกเรียกใช้ จากนั้นไปที่ Bแม้ว่าจะไม่ได้เขียน super () แต่โดยค่าเริ่มต้น ตัวสร้างหลักจะถูกเรียก
สุดยอดใช้วิธีดังนี้
รูปที่ 03: โปรแกรม Java ที่เรียกใช้วิธี superclass
ตามโปรแกรมด้านบน คลาส A มีวิธีการแสดงผล คลาส B ยังมีวิธีการแสดงผล คลาส B ขยาย A. เมื่อสร้างวัตถุประเภท B และเรียกวิธีการแสดงจะให้ผลลัพธ์เป็น A และ B ในวิธีการแสดงคลาส B วิธีการแสดงคลาส A ถูกเรียกโดยใช้ super.display() วิธีนั้นจะพิมพ์ "A" ก่อน แล้วพิมพ์ “B”.
ความคล้ายคลึงกันระหว่างสิ่งนี้กับซุปเปอร์คืออะไร
ทั้งสองเป็นคีย์เวิร์ดในการเขียนโปรแกรม Java
ความแตกต่างระหว่างสิ่งนี้กับซุปเปอร์คืออะไร
นี่กับซุปเปอร์ |
|
'นี้' เป็นตัวแปรอ้างอิงที่ใช้เพื่ออ้างอิงวัตถุปัจจุบัน | 'super' เป็นตัวแปรอ้างอิงที่ใช้เพื่ออ้างอิงวัตถุ superclass ในทันที |
ตัวแปรอินสแตนซ์ | |
สามารถอ้างอิงตัวแปรอินสแตนซ์คลาสปัจจุบันได้โดยใช้สิ่งนี้ | สามารถอ้างอิงตัวแปรอินสแตนซ์ Superclass ได้โดยใช้ super |
วิธีการเรียน | |
วิธีการเรียนปัจจุบันสามารถเรียกใช้ได้โดยใช้สิ่งนี้ | สามารถเรียกใช้วิธี Superclass ได้โดยใช้ super |
ตัวสร้าง | |
ตัวสร้างคลาสปัจจุบันสามารถเรียกใช้ได้โดยใช้สิ่งนี้(). | ตัวสร้าง Superclass สามารถเรียกใช้ได้โดยใช้ super(). |
Summary – this vs super ใน Java
มีการใช้คีย์เวิร์ด 'this' และ 'super' ใน Java ไม่สามารถใช้คีย์เวิร์ดเป็นตัวแปรหรือชื่อตัวระบุอื่นๆ พวกเขาดูเหมือนจะเหมือนกัน แต่มีความแตกต่าง ความแตกต่างระหว่างสิ่งนี้กับ super คือ super เป็นตัวแปรอ้างอิงที่ใช้เพื่ออ้างอิงวัตถุ superclass ทันที ในขณะที่ตัวแปรนี้เป็นตัวแปรอ้างอิงที่อ้างถึงวัตถุปัจจุบัน
ดาวน์โหลดไฟล์ PDF ของสิ่งนี้ vs super ใน Java
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามบันทึกการอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่: ความแตกต่างระหว่างสิ่งนี้กับ super ใน Java