Abstract Class และ Interface ใน Java ต่างกันอย่างไร?



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

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

หัวข้อที่กล่าวถึงในบทความนี้มีดังนี้:





เพื่อทำความเข้าใจความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซใน คุณต้องรู้ว่าคลาสนามธรรมคืออะไรและอินเทอร์เฟซคืออะไร เริ่มจากการพูดคุยกันก่อนว่าสิ่งเหล่านี้คืออะไร

Abstract Class ใน Java คืออะไร?

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



บันทึก: อัน วิธีนามธรรม เป็นวิธีการที่ไม่ได้นำมาใช้และเพิ่มความไม่สมบูรณ์ถึง ชั้นเรียน .

package MyPackage // abstract class abstract class Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // ประกาศวิธีการที่ไม่ใช่นามธรรม // มีการใช้งานเริ่มต้นเป็นโมฆะสาธารณะ BasicInfo (รายละเอียดสตริง) {System. out.println (this.AnimalName + '' + details)} // วิธีการที่เป็นนามธรรมซึ่งจะถูก // ดำเนินการโดย subclass (es) นามธรรมที่อยู่อาศัยที่เป็นโมฆะสาธารณะ () นามธรรมการหายใจที่เป็นโมฆะสาธารณะ ()} คลาส Terrestrial ขยายสัตว์ {// คอนสตรัคเตอร์ Terrestrial (ชื่อสตริง) {super (name)} @Override public void residence () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire ผ่านปอดหรือหลอดลม ')}} คลาส Aquatic ขยายสัตว์ {// constructor Aquatic (String name) {super (name)} @Override public void residence () {System.out.println (' It leaves in water and ') } @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} class AbstractClassDemo {public static voi d main (String [] args) {// การสร้างคลาส Object of Terrestrial // และใช้การอ้างอิงคลาส Animal Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('are terrestrial what's, they') object1.habitat () object1.respiration () System.out.println ('') // การสร้าง Objects of circle class Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('are aqautic what's, they') object2.habitat () object2.respiration ()}}

เอาต์พุต

มนุษย์เป็นสิ่งมีชีวิตบนบกพวกมันทิ้งไว้บนบกและหายใจทางปอดหรือหลอดลม ปลาเป็นสิ่งมีชีวิตที่ชอบกินสัตว์พวกมันทิ้งไว้ในน้ำและหายใจผ่านเหงือกหรือผิวหนังของพวกมัน

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



อินเทอร์เฟซใน Java

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

แพคเกจอินเทอร์เฟซ MyPackage สัตว์ {// วิธีนามธรรมเป็นโมฆะที่อยู่อาศัย () โมฆะการหายใจ ()} คลาส TerrestrialA ใช้สัตว์ {String AnimalName = '' // constructor TerrestrialA (ชื่อสตริง) {this.AnimalName = name} @Override public void residence () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ('respire through lung or trachea.')}} คลาส AquaticA ใช้สัตว์ {String AnimalName = '' // constructor AquaticA (ชื่อสตริง) {this.AnimalName = name} @Override public void residence () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} class JavaInterfaceDemo {public static void main (String [] args) {// การสร้าง Object of Terrestrial class // และใช้การอ้างอิงคลาส Animal . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // การสร้าง Objects of circle class Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

เอาต์พุต

มนุษย์ทิ้งไว้บนบกและหายใจทางปอดหรือหลอดลม ปลาทิ้งไว้ในน้ำและหายใจทางเหงือกหรือผิวหนัง

หากคุณไม่มีรหัสทั่วไประหว่างไฟล์ ชั้นเรียน จากนั้นคุณสามารถไปที่อินเทอร์เฟซได้ อินเทอร์เฟซเป็นเหมือนพิมพ์เขียวของคลาสเนื่องจากไม่มีวิธีการใด ๆ ที่ไม่ใช่นามธรรม

จากเนื้อหาข้างต้นคุณอาจสังเกตเห็นความแตกต่างที่สำคัญระหว่างคลาสนามธรรมและอินเทอร์เฟซใน . ซึ่งแตกต่างจากคลาสนามธรรมอินเทอร์เฟซเต็มรูปแบบ นามธรรม ใน Java ตอนนี้เรามาดูความแตกต่างอื่น ๆ กัน

คลาสนามธรรมเทียบกับอินเทอร์เฟซ

ตารางด้านล่างแสดงความแตกต่างที่สำคัญระหว่างคลาสนามธรรมและอินเทอร์เฟซ

การเขียนล่ามใน java
พารามิเตอร์ คลาสนามธรรม อินเตอร์เฟซ

การปรับใช้วิธีการเริ่มต้น

สามารถใช้วิธีการเริ่มต้นได้

อินเทอร์เฟซให้นามธรรมที่บริสุทธิ์และไม่สามารถใช้งานได้เลย

ตัวแปร

ติดตั้ง php 7 บน windows

อาจมีตัวแปรที่ไม่ใช่ตัวแปรสุดท้าย

ตัวแปรที่ประกาศในอินเทอร์เฟซจะเป็นค่าเริ่มต้นขั้นสุดท้าย

คำหลักที่ใช้

คลาสนามธรรมสามารถขยายได้โดยใช้คำหลัก 'ขยาย

ควรใช้อินเทอร์เฟซโดยใช้คำหลักïmplements

การปรับเปลี่ยนการเข้าถึง

สามารถมีตัวแก้ไขสาธารณะการป้องกันส่วนตัวและค่าเริ่มต้น

วิธีการเชื่อมต่อเป็นแบบสาธารณะโดยค่าเริ่มต้น คุณไม่สามารถใช้ตัวแก้ไขการเข้าถึงอื่น ๆ กับมันได้

ความเร็วในการดำเนินการ

เร็วกว่าอินเทอร์เฟซ

อินเทอร์เฟซค่อนข้างช้าและต้องการทิศทางพิเศษ

ชั้นเรียนปกติ

สามารถขยายคลาสนามธรรมได้เพียงคลาสเดียว

งูใหญ่สำหรับงูหลามคืออะไร

สามารถใช้หลายอินเทอร์เฟซ

ตัวสร้าง

คลาสนามธรรมสามารถมีตัวสร้างได้

อินเทอร์เฟซต้องไม่มีตัวสร้าง

มรดกหลายรายการ

คลาสนามธรรมสามารถขยายคลาสอื่นและสามารถใช้อินเตอร์เฟส Java ได้หลายตัว

อินเทอร์เฟซสามารถขยายอินเตอร์เฟส Java อื่นได้เท่านั้น

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

เมื่อใดควรใช้ Abstract Class & ควรใช้อินเทอร์เฟซเมื่อใด

พิจารณาใช้คลาสนามธรรมในกรณีต่อไปนี้:

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

พิจารณาใช้อินเทอร์เฟซในกรณีต่อไปนี้:

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

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

ให้แน่ใจว่าคุณฝึกฝนให้มากที่สุดและเปลี่ยนประสบการณ์

ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก เราพร้อมที่จะช่วยเหลือคุณในทุกขั้นตอนในการเดินทางของคุณสำหรับการเป็นนอกเหนือจากคำถามสัมภาษณ์ java นี้เรามาพร้อมกับหลักสูตรที่ออกแบบมาสำหรับนักเรียนและมืออาชีพที่ต้องการเป็น Java Developer

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของ 'java Map interface' บทความและเราจะติดต่อกลับโดยเร็วที่สุด