ความแตกต่างที่สำคัญ – การสืบทอดเทียบกับส่วนต่อประสานใน Java
Java เป็นภาษาโปรแกรมที่พัฒนาโดย Sun Microsystems Java สามารถใช้ในการพัฒนาแอพพลิเคชั่นต่างๆ เป็นภาษาแบบหลายกระบวนทัศน์ที่สนับสนุนเชิงวัตถุ โครงสร้าง ฯลฯ ข้อได้เปรียบหลักของ Java คือสนับสนุนการเขียนโปรแกรมเชิงวัตถุ (OOP) โปรแกรมเมอร์สามารถสร้างคลาสและอ็อบเจ็กต์ได้ OOP มีสี่เสาหลัก สิ่งเหล่านี้คือการสืบทอด ความหลากหลาย นามธรรม และการห่อหุ้ม การสืบทอดและอินเทอร์เฟซเกี่ยวข้องกับ OOP ความแตกต่างที่สำคัญระหว่างการสืบทอดและอินเทอร์เฟซคือการสืบทอดคือการสืบทอดคลาสใหม่จากคลาสที่มีอยู่และอินเทอร์เฟซคือการใช้คลาสนามธรรมและการสืบทอดหลายรายการ
มรดกในภาษาจาวาคืออะไร
การสืบทอดสามารถใช้โค้ดซ้ำได้ การสืบทอดช่วยนำแอตทริบิวต์และเมธอดของคลาสที่มีอยู่มาใช้ซ้ำ กลไกการรับคลาสใหม่โดยใช้คลาสเก่าเรียกว่าการสืบทอด คลาสเก่าเรียกว่าคลาสพาเรนต์หรือซูเปอร์คลาส คลาสที่ได้รับจะเรียกว่าคลาสย่อยหรือคลาสย่อย
ไวยากรณ์ของการสืบทอด Java มีดังต่อไปนี้
คลาส subclass_name ขยาย superclass_name {
การประกาศตัวแปร
ประกาศวิธีการ
}
แนวคิดการสืบทอดสามารถอธิบายได้โดยใช้ตัวอย่างต่อไปนี้ สมมติว่ามีคลาส A ดังนี้
สาธารณะ A{
ผลรวมโมฆะสาธารณะ(){
System.out.println(“ผลรวม”);
}
}
หากต้องการเพิ่ม method ใหม่โดยไม่เปลี่ยน class เดิม สามารถทำได้ดังนี้
คลาสสาธารณะ B{
ย่อยโมฆะสาธารณะ(){
System.out.println(“Sub”);
}
}
โปรแกรมเมอร์สามารถใช้มรดกเพื่อใช้ผลรวมคลาส A().
สาธารณะคลาส B ขยายคลาส A{
ย่อยโมฆะสาธารณะ(){
System.out.println(“Sub”);
}
}
ในฟังก์ชันหลัก คุณสามารถสร้างวัตถุของ B และ call sub() ซึ่งเป็นของคลาส B และ sum() ซึ่งเป็นของคลาส A โดยใช้การสืบทอด
public static void main(สตริง args){
B obj=ใหม่ B();
obj.sub();
obj.sum();
}
มรดกมีหลายประเภท เป็นการสืบทอดเดี่ยว การสืบทอดหลายรายการ การสืบทอดหลายระดับ และการสืบทอดตามลำดับชั้น ในการสืบทอดเดี่ยว มีคลาสฐานหนึ่งคลาสและคลาสที่ได้รับหนึ่งคลาสในการสืบทอดหลายระดับ มีสามคลาสคือ คลาสฐาน คลาสกลาง และคลาสที่ได้รับ คลาสระดับกลางสืบทอดจากคลาสพื้นฐาน และคลาสที่ได้รับสืบทอดมาจากคลาสระดับกลาง ในการสืบทอดตามลำดับชั้น มีคลาสฐานหนึ่งคลาสและคลาสที่ได้รับจำนวนมาก มีชนิดพิเศษที่เรียกว่ามรดกไฮบริด เป็นการรวมกันระหว่างมรดกตั้งแต่สองประเภทขึ้นไป
รูปที่ 01: มรดก
ในการสืบทอดหลายชั้น มีหลายคลาสพื้นฐานและหนึ่งคลาสที่ได้รับ สมมติว่าคลาส A และ B เป็นคลาสพื้นฐาน คลาส C เป็นคลาสที่ได้รับ หากทั้งคลาส A และ B มีเมธอดเดียวกัน และโปรแกรมเมอร์เรียกเมธอดนั้นจากคลาสที่ได้รับ จะทำให้เกิดปัญหาความกำกวม การสืบทอดสองคลาสอาจทำให้เกิดข้อผิดพลาดในการคอมไพล์ดังนั้นจึงไม่รองรับการสืบทอดหลายรายการใน Java สามารถใช้อินเทอร์เฟซเพื่อแก้ปัญหานั้นได้
ส่วนต่อประสานใน Java คืออะไร
Abstraction คือกระบวนการซ่อนรายละเอียดการใช้งานและแสดงเฉพาะฟังก์ชันให้ผู้ใช้เห็น นามธรรมสามารถทำได้โดยใช้คลาสนามธรรมหรืออินเทอร์เฟซ วิธีการเชิงนามธรรมคือวิธีการที่ไม่มีการใช้งาน คลาสที่มีเมธอดนามธรรมอย่างน้อยหนึ่งวิธีคือคลาสนามธรรม ตัวอย่างคลาสนามธรรมมีดังนี้
นามธรรมคลาส A{
ผลรวมโมฆะนามธรรม();
}
สมมติว่ามีคลาสนามธรรมสองคลาสคือ A และ B ในการใช้วิธีการนามธรรมของ A และ B คลาส C ใหม่จะถูกสร้างขึ้น จากนั้นคลาส C ควรขยายทั้ง A และ B. แต่ Java ไม่รองรับการสืบทอดหลายรายการ ดังนั้นควรใช้อินเทอร์เฟซ สามารถใช้อินเตอร์เฟสเพื่อประกาศเมธอด แต่ไม่สามารถกำหนดเมธอดได้ ไม่สามารถสร้างวัตถุโดยใช้อินเทอร์เฟซได้คลาส C ควรใช้วิธีการทั้งหมดในอินเทอร์เฟซ A และ B
อินเทอร์เฟซ A{
ผลรวมเป็นโมฆะ();
}
อินเทอร์เฟซ B{
void sub();
}
คลาส C ใช้ A, B{
ผลรวมโมฆะสาธารณะ(){
System.out.println(“ผลรวม”);
}
ย่อยโมฆะสาธารณะ(){
System.out.println(“การลบ”);
}
}
ตอนนี้ ในโปรแกรมหลัก คุณสามารถสร้างวัตถุของ C และเรียกทั้งสองวิธีได้
public static void main (สตริง args) {
C obj=ใหม่ C();
obj.sum();
obj.sub();
}
ดังนั้น อินเทอร์เฟซสามารถใช้เพื่อปรับใช้การสืบทอดหลายรายการ
การใช้อินเทอร์เฟซอีกอย่างคือให้ความปลอดภัย อ้างอิงรหัสด้านล่าง
อินเทอร์เฟซ A {
ผลรวมเป็นโมฆะ ();
}
คลาส B ใช้งาน A {
ผลรวมโมฆะสาธารณะ () {
System.out.println(“ผลรวม”);
}
โมฆะสาธารณะ คูณ () {
System.out.println(“การคูณ”);
}
}
เมื่อสร้างวัตถุของ B เป็นไปได้ที่จะเรียกทั้งสองวิธี sum () และคูณ () หากโปรแกรมเมอร์ต้องการจำกัดการใช้ฟังก์ชันคูณ () สามารถทำได้ดังนี้
public static void main(สตริง args){
A obj=ใหม่ B();
obj.sum();
}
A obj=ใหม่ B(); จะสร้างวัตถุ เป็นประเภท A และหน่วยความจำถูกจัดสรรเป็น B เป็นไปได้ที่จะเรียก sum() แต่ไม่สามารถดำเนินการ multiply() ข้อจำกัดนี้ทำได้โดยใช้อินเทอร์เฟซ
ความคล้ายคลึงกันระหว่างการสืบทอดและอินเทอร์เฟซใน Java คืออะไร
- แนวคิดทั้งสองเกี่ยวข้องกับการเขียนโปรแกรมเชิงวัตถุ
- ทั้งสองเป็นตัวแทนของความสัมพันธ์แบบ IS-A
ความแตกต่างระหว่างการสืบทอดและส่วนต่อประสานใน Java คืออะไร
การสืบทอดเทียบกับส่วนต่อประสานใน Java |
|
การสืบทอดเป็นแนวคิด OOP เพื่อให้ได้คลาสใหม่จากคลาสที่มีอยู่ | อินเทอร์เฟซเป็นกลไกใน OOP ในการนำสิ่งที่เป็นนามธรรมและการสืบทอดหลายรายการ |
การใช้งาน | |
การสืบทอดให้รหัสนำกลับมาใช้ใหม่ได้ | อินเทอร์เฟซให้นามธรรมและมรดกหลายอย่าง |
สรุป – การสืบทอดเทียบกับส่วนต่อประสานใน Java
Java เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์ซึ่งสนับสนุนการเขียนโปรแกรมเชิงวัตถุการสืบทอดและอินเทอร์เฟซเกี่ยวข้องกับการเขียนโปรแกรมเชิงวัตถุ ความแตกต่างระหว่างการสืบทอดและอินเทอร์เฟซคือการสืบทอดคือการได้รับคลาสใหม่จากคลาสที่มีอยู่และอินเทอร์เฟซคือการใช้คลาสนามธรรมและการสืบทอดหลายรายการ
ดาวน์โหลดเวอร์ชัน PDF ของการสืบทอดเทียบกับส่วนต่อประสานใน Java
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดเวอร์ชัน PDF ที่นี่ ความแตกต่างระหว่างการสืบทอดและอินเทอร์เฟซใน Java