ความแตกต่างระหว่าง Abstract Class และ Interface ใน Java ความแตกต่างระหว่าง

Anonim

ระดับนามธรรมและอินเตอร์เฟซ ในภาษาจาวา

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

อินเทอร์เฟซ Java สามารถเทียบเท่ากับโปรโตคอล เป็นการแสดงพฤติกรรมที่ตั้งไว้ล่วงหน้าและตกลงกันไว้ซึ่งจะช่วยอำนวยความสะดวกในการปฏิสัมพันธ์ของวัตถุที่ไม่เกี่ยวข้องกัน อินเทอร์เฟซจะถือกุญแจสำคัญในการดำเนินการต่าง ๆ ขึ้นอยู่กับผู้ใช้ อินเทอร์เฟซจึงทำหน้าที่เป็นตัวเชื่อมโยงระหว่างผู้ผลิตและผู้บริโภค อินเทอร์เฟซในจาวาจึงเป็นกลุ่มของวิธีการที่มีตัวเปล่าซึ่งอาจมีการประกาศอย่างต่อเนื่อง ในการเปิดเผยชั้นเรียนให้กับอินเทอร์เฟซ Java หมายความว่าพฤติกรรมที่คาดหวังของชั้นเรียนคือการใช้งานอินเทอร์เฟซทั้งหมด

ความแตกต่าง

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

การมองเห็นยังเป็นไปได้สำหรับวิธีการหรือสมาชิกของคลาสนามธรรมซึ่งอาจแตกต่างกันเช่นสาธารณะป้องกันส่วนตัวหรือไม่มี การมองเห็นของอินเทอร์เฟซในทางกลับกันสามารถตั้งค่าไว้ล่วงหน้าเฉพาะโหมดการมองเห็นหนึ่งแบบซึ่งเป็น "สาธารณะ" '"

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

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

ในการทำงานอินเทอร์เฟซมีแนวโน้มที่จะทำงานช้าลงเมื่อเทียบกับชั้นนามธรรมเนื่องจากมีทิศทางพิเศษในการหาวิธีการที่สอดคล้องกันในชั้นเรียน อย่างไรก็ตามความแตกต่างได้ชะลอตัวลงเนื่องจากเครื่องเสมือน Java เสมือนจริงที่ได้รับการอัปเกรดอย่างต่อเนื่อง

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

บทคัดย่อ

  1. ฟิลด์ชั้นนามธรรมไม่ได้เป็นแบบคงที่หรือแบบสุดท้ายแทนที่จะเป็นอินเทอร์เฟซที่มีตารางแบบคงที่และแบบสุดท้าย

  2. ไม่มีรหัสการใช้งานที่สามารถใช้ในอินเทอร์เฟซได้ในขณะที่สามารถใช้ได้ในคลาสนามธรรม

  3. การมองเห็นของอินเทอร์เฟซสามารถเป็นแบบสาธารณะได้ในขณะที่การมองเห็นชั้นนามธรรมอาจแตกต่างกันไป

  4. คลาสนามธรรมจะสืบทอดคลาสอ็อบเจ็กต์โดยอัตโนมัติ แต่ไม่สามารถใช้อินเทอร์เฟซได้

  5. ระดับนามธรรมเร็วกว่าอินเทอร์เฟซในการใช้งาน