ความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซใน Java

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

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

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

Abstract Class คืออะไร?

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

เหตุผลสำคัญในการใช้อินเทอร์เฟซ

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

เหตุผลสำคัญในการใช้คลาสนามธรรม

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

อินเทอร์เฟซคืออะไร?

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

ความแตกต่างระหว่างอินเทอร์เฟซและคลาสนามธรรมใน Java

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

พารามิเตอร์ อินเตอร์เฟซ คลาสนามธรรม
ความเร็ว ช้า รวดเร็ว
มรดกหลายรายการ ใช้อินเทอร์เฟซต่างๆ มีเพียงคลาสนามธรรมเดียวเท่านั้น
โครงสร้าง วิธีการเชิงนามธรรม วิธีการเชิงนามธรรมและเป็นรูปธรรม
ควรใช้เมื่อไร การปรับปรุงในอนาคต เพื่อหลีกเลี่ยงความเป็นอิสระ
การสืบทอด/การนำไปปฏิบัติ คลาสสามารถใช้หลายอินเทอร์เฟซได้ คลาสสามารถสืบทอดคลาสนามธรรมได้เพียงคลาสเดียวเท่านั้น
การใช้งานเริ่มต้น ในขณะที่เพิ่มสิ่งใหม่ๆ ให้กับอินเทอร์เฟซ การค้นหา Implementors ทั้งหมดและ Implement สิ่งที่กำหนดไว้ใหม่ถือเป็นฝันร้าย ในกรณีของ Abstract Class คุณสามารถใช้ประโยชน์จากการใช้งานเริ่มต้นได้
ตัวแก้ไขการเข้าถึง อินเทอร์เฟซไม่มีตัวแก้ไขการเข้าถึง ทุกอย่างที่กำหนดไว้ภายในอินเทอร์เฟซถือเป็นตัวแก้ไขสาธารณะ Abstract Class สามารถมีตัวแก้ไขการเข้าถึงได้
ควรใช้เมื่อไร ควรใช้อินเทอร์เฟซเมื่อการใช้งานต่างๆ แชร์เฉพาะลายเซ็นวิธีการเท่านั้น ลำดับชั้นแบบโพลีมอร์ฟิกของประเภทค่า ควรใช้เมื่อการใช้งานประเภทเดียวกันหลายอย่างมีพฤติกรรมร่วมกัน
เขตข้อมูล อินเทอร์เฟซไม่สามารถมีช่องข้อมูลได้ ชั้นเรียนสามารถมีเขตข้อมูลได้
ค่าเริ่มต้นของการสืบทอดหลายรายการ คลาสอาจใช้อินเทอร์เฟซมากมาย คลาสสืบทอดคลาสนามธรรมเพียงคลาสเดียวเท่านั้น
การดำเนินงาน อินเทอร์เฟซเป็นแบบนามธรรมดังนั้นจึงไม่สามารถให้โค้ดใดๆ ได้ คลาสนามธรรมสามารถให้โค้ดเริ่มต้นที่สมบูรณ์ซึ่งควรถูกแทนที่
การใช้ตัวดัดแปลงการเข้าถึง คุณไม่สามารถใช้ตัวแก้ไขการเข้าถึงสำหรับวิธีการ คุณสมบัติ ฯลฯ คุณสามารถใช้คลาสนามธรรมซึ่งมีตัวดัดแปลงการเข้าถึง
การใช้ อินเทอร์เฟซช่วยในการกำหนดความสามารถต่อพ่วงของคลาส คลาสนามธรรมกำหนดเอกลักษณ์ของคลาส
ฟิลด์ที่กำหนด ไม่สามารถกำหนดฟิลด์ได้ คลาสนามธรรมช่วยให้คุณสามารถกำหนดทั้งฟิลด์และค่าคงที่ได้
มรดก อินเทอร์เฟซสามารถสืบทอดหลายอินเทอร์เฟซได้ แต่ไม่สามารถสืบทอดคลาสได้ คลาสนามธรรมสามารถสืบทอดคลาสและหลายอินเทอร์เฟซได้
ตัวสร้างหรือตัวทำลาย อินเทอร์เฟซไม่สามารถประกาศตัวสร้างหรือตัวทำลายได้ คลาสนามธรรมสามารถประกาศตัวสร้างและตัวทำลายได้
ขีดจำกัดของส่วนขยาย สามารถขยายอินเทอร์เฟซจำนวนเท่าใดก็ได้ มันสามารถขยายได้เพียงคลาสเดียวหรือคลาสนามธรรมครั้งละหนึ่งคลาสเท่านั้น
คำสำคัญที่เป็นนามธรรม ในคีย์เวิร์ดอินเทอร์เฟซนามธรรม เป็นทางเลือกสำหรับการประกาศวิธีการเป็นนามธรรม ในคลาสนามธรรม คีย์เวิร์ด abstract จำเป็นสำหรับการประกาศวิธีการเป็นนามธรรม
ประเภทคลาส อินเทอร์เฟซสามารถมีได้เฉพาะวิธีนามธรรมสาธารณะเท่านั้น คลาสนามธรรมมีการป้องกันและวิธีการนามธรรมแบบสาธารณะ

โค้ดตัวอย่างสำหรับ Interface และ Abstract Class ใน Java

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

ไวยากรณ์อินเทอร์เฟซ

interface name{
//methods
}

Java ตัวอย่างอินเทอร์เฟซ:

interface Pet {
    public void test();
}
class Dog implements Pet {
    public void test() {
        System.out.println("Interface Method Implemented");
    }
    public static void main(String args[]) {
        Pet p = new Dog();
        p.test();
    }
}

ไวยากรณ์คลาสนามธรรม

abstract class name{
    // code
}

ตัวอย่างคลาสนามธรรม:

abstract class Shape {
    int b = 20;
    abstract public void calculateArea();
}

public class Rectangle extends Shape {
    public static void main(String args[]) {
        Rectangle obj = new Rectangle();
        obj.b = 200;
        obj.calculateArea();
    }
    public void calculateArea() {
        System.out.println("Area is " + (b * b));
    }
}