แนะนำ, 2020

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างการขยายและการใช้คำค้นหาใน Java

คีย์เวิร์ดจะขยายและนำไปใช้เพื่อสืบทอดคุณลักษณะของบล็อกพาเรนต์ที่มีอยู่แล้วในบล็อกย่อยที่สร้างขึ้นใหม่ การใช้คำหลัก extends คลาสที่สร้างขึ้นใหม่ (คลาสย่อย) สามารถสืบทอดคุณลักษณะของคลาสที่มีอยู่ (superclass) การใช้คำหลักที่ดำเนินการชั้นที่สร้างขึ้นใหม่สามารถใช้วิธีการทั้งหมดของอินเตอร์เฟซ ความแตกต่างหลักระหว่างคำหลักที่ขยายและนำไปปฏิบัติคือคลาสจะขยายคลาสอื่นเพื่อสืบทอดสมาชิกทั้งหมดในขณะที่คลาสใช้อินเทอร์เฟซเพื่อรับเมธอดทั้งหมดและนำไปใช้ตามความต้องการ มีความแตกต่างอื่น ๆ ระหว่างคำหลักที่ขยายและนำไปปฏิบัติในตารางเปรียบเทียบที่แสดงด้านล่าง

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบขยายนำไปปฏิบัติ
ขั้นพื้นฐานคำหลักที่ขยายจะใช้ในการสร้างคลาสย่อยโดยใช้คุณสมบัติของซูเปอร์คลาสคีย์เวิร์ดการดำเนินการถูกใช้สำหรับการนำอินเตอร์เฟสไปใช้งาน
วิธีการคำหลักที่ขยายอาจไม่แทนที่วิธีการทั้งหมดของชั้นเรียน 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 

เช่นเดียวกับในรหัสข้างต้นคุณจะเห็นว่าการสาธิตคลาสใช้สองสตริงการเชื่อมต่อและจำนวนเต็มและได้ใช้วิธีการที่ประกาศในทั้งอินเตอร์เฟสที่แสดง () และแสดง ()

ความแตกต่างที่สำคัญระหว่างการขยายและการใช้งาน

  1. คลาสสามารถสืบทอดคลาสอื่นหรืออินเทอร์เฟซสืบทอดอินเทอร์เฟซอื่นโดยใช้คำสำคัญที่ขยายในขณะที่คลาสสามารถใช้อินเทอร์เฟซที่ใช้คำสำคัญที่ดำเนินการ
  2. คลาสย่อยที่ขยายซูเปอร์คลาสอาจหรืออาจไม่แทนที่เมธอดทั้งหมดในซูเปอร์คลาส ในทางกลับกันคลาสที่ใช้อินเทอร์เฟซจะต้องกำหนด / ใช้วิธีการทั้งหมดของอินเตอร์เฟสนั้น
  3. คลาสสามารถนำอินเตอร์เฟสมาใช้จำนวนเท่าใดก็ได้ในเวลาเดียวกัน ในทางกลับกันคลาสสามารถขยายคลาสซุปเปอร์หนึ่งคลาสเท่านั้น
  4. อินเทอร์เฟซสามารถขยายจำนวนของอินเทอร์เฟซใด ๆ แต่อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่น ๆ เป็นการใช้วิธีการกำหนดวิธีการและอินเทอร์เฟซมีวิธีนามธรรมเสมอดังนั้นอินเทอร์เฟซ

สรุป:

ฉันสรุปการอภิปรายว่าการใช้อินเทอร์เฟซทำให้รหัสมีความยืดหยุ่นมากกว่าการขยายชั้นเรียน ในขณะที่มันหลีกเลี่ยงข้อ จำกัด ของการสืบทอดซุปเปอร์คลาสเพียงคลาสเดียวใน Java การใช้คำหลักที่ดำเนินการชั้นสามารถสืบทอดคุณสมบัติของมากกว่าหนึ่งอินเตอร์เฟส

Top