
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | ขยาย | นำไปปฏิบัติ |
---|---|---|
ขั้นพื้นฐาน | คำหลักที่ขยายจะใช้ในการสร้างคลาสย่อยโดยใช้คุณสมบัติของซูเปอร์คลาส | คีย์เวิร์ดการดำเนินการถูกใช้สำหรับการนำอินเตอร์เฟสไปใช้งาน |
วิธีการ | คำหลักที่ขยายอาจไม่แทนที่วิธีการทั้งหมดของชั้นเรียน super | คำหลักที่ใช้จะต้องใช้วิธีการทั้งหมดของอินเทอร์เฟซที่ใช้งานแล้ว |
ชั้น | คลาสสามารถขยายคลาสซุปเปอร์หนึ่งคลาสเท่านั้น | ชั้นสามารถใช้หลาย ๆ อินเทอร์เฟซ |
อินเตอร์เฟซ | อินเทอร์เฟซสามารถขยายได้มากกว่าหนึ่งอินเทอร์เฟซ | อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่น |
คำจำกัดความของคำหลักขยาย
การสืบทอดเป็นแนวคิดที่สำคัญในการเขียนโปรแกรมเชิงวัตถุจะทำได้เมื่อคลาสย่อยขยายซูเปอร์คลาสอื่น คลาสย่อยได้รับอนุญาตให้ขยายซูเปอร์คลาสเดียวเท่านั้น คลาสไม่สามารถขยายคลาสซุปเปอร์มากกว่าหนึ่งใน Java เมื่อคลาสขยายคลาสอีกคลาสสามารถแทนที่เมธอดที่กำหนดในซูเปอร์คลาส ให้เราเข้าใจคำหลักที่ครอบคลุมด้วยความช่วยเหลือของตัวอย่าง
คลาส A {String s; A (สตริง s1) {s = s1; } // display string display void display () {System.out.println (+ s); }} คลาส B ขยาย A {String i; B (String s1, String i1) {super (s1); i = i1; } โมฆะ dispaly () {super.dispaly (); / * display () ของคลาส A ถูกเรียกใช้ * / System.out.println (+ i); }} แทนที่คลาส {โมฆะสาธารณะคงที่หลัก (String args []) {B ob = ใหม่ B (เทคโนโลยีความแตกต่าง); ob.display (); / * จอแสดงผลของคลาส B ที่ถูกเรียก * /}} / * out put * / Tech Differences
ในโค้ดด้านบนคุณสามารถสังเกตได้ว่าคลาส B ได้ขยายคลาส A และแทนที่เมธอด display () ที่กำหนดไว้ใน class A ในทำนองเดียวกันอินเตอร์เฟสสามารถขยายได้มากกว่าหนึ่งอินเตอร์เฟสในเวลาเดียวกัน เนื่องจากอินเตอร์เฟสไม่จำเป็นต้องใช้เมธอดใด ๆ ของอินเตอร์เฟสเพิ่มเติมดังนั้นจึงอนุญาตให้สืบทอดอินเตอร์เฟสหลายอินเตอร์เฟสในแต่ละครั้ง
คำจำกัดความของคำหลักที่ใช้
การใช้คีย์เวิร์ดนำไปปฏิบัติคลาสจะสืบทอดเมธอดทั้งหมดในอินเตอร์เฟส เมื่อคลาสใช้อินเทอร์เฟซคลาสนั้นจะต้องใช้วิธีการทั้งหมดของอินเตอร์เฟสที่ใช้งาน อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่นเป็นคำสำคัญที่ใช้สัญญาการใช้วิธีการ แต่อินเทอร์เฟซไม่เคยใช้วิธีการในนั้นดังนั้นจึงเป็นไปไม่ได้สำหรับอินเทอร์เฟซเพื่อใช้อินเทอร์เฟซอื่น ให้เราเข้าใจการใช้คำหลักด้วยความช่วยเหลือของตัวอย่าง
สตริงอินเตอร์เฟส {void display (String s); } จำนวนเต็มส่วนต่อประสาน {void show (int i); } การสาธิตคลาสใช้สตริงจำนวนเต็ม {โมฆะแสดง (int i) {System.Out.Println ("ค่าจำนวนเต็ม:" + i); } void display (String s) {System.Out.Println ("ค่าสตริง:" + s); }} คลาส Demo_main {โมฆะสาธารณะคงที่หลัก (สตริง args []) {สาธิต d = การสาธิตใหม่ (); d.display ( "TechDifferences"); d.show (2); }} / * เอาต์พุต * / TechDifferences 2
เช่นเดียวกับในรหัสข้างต้นคุณจะเห็นว่าการสาธิตคลาสใช้สองสตริงการเชื่อมต่อและจำนวนเต็มและได้ใช้วิธีการที่ประกาศในทั้งอินเตอร์เฟสที่แสดง () และแสดง ()
ความแตกต่างที่สำคัญระหว่างการขยายและการใช้งาน
- คลาสสามารถสืบทอดคลาสอื่นหรืออินเทอร์เฟซสืบทอดอินเทอร์เฟซอื่นโดยใช้คำสำคัญที่ขยายในขณะที่คลาสสามารถใช้อินเทอร์เฟซที่ใช้คำสำคัญที่ดำเนินการ
- คลาสย่อยที่ขยายซูเปอร์คลาสอาจหรืออาจไม่แทนที่เมธอดทั้งหมดในซูเปอร์คลาส ในทางกลับกันคลาสที่ใช้อินเทอร์เฟซจะต้องกำหนด / ใช้วิธีการทั้งหมดของอินเตอร์เฟสนั้น
- คลาสสามารถนำอินเตอร์เฟสมาใช้จำนวนเท่าใดก็ได้ในเวลาเดียวกัน ในทางกลับกันคลาสสามารถขยายคลาสซุปเปอร์หนึ่งคลาสเท่านั้น
- อินเทอร์เฟซสามารถขยายจำนวนของอินเทอร์เฟซใด ๆ แต่อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่น ๆ เป็นการใช้วิธีการกำหนดวิธีการและอินเทอร์เฟซมีวิธีนามธรรมเสมอดังนั้นอินเทอร์เฟซ
สรุป:
ฉันสรุปการอภิปรายว่าการใช้อินเทอร์เฟซทำให้รหัสมีความยืดหยุ่นมากกว่าการขยายชั้นเรียน ในขณะที่มันหลีกเลี่ยงข้อ จำกัด ของการสืบทอดซุปเปอร์คลาสเพียงคลาสเดียวใน Java การใช้คำหลักที่ดำเนินการชั้นสามารถสืบทอดคุณสมบัติของมากกว่าหนึ่งอินเตอร์เฟส