Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

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


คลาส

คลาสคือพิมพ์เขียวที่สร้างแต่ละออบเจ็กต์ คลาสสามารถมีตัวแปรประเภทใดก็ได้ต่อไปนี้

  • ตัวแปรท้องถิ่น − ตัวแปรที่กำหนดไว้ภายในเมธอด ตัวสร้าง หรือบล็อก เรียกว่าตัวแปรท้องถิ่น ตัวแปรจะถูกประกาศและเริ่มต้นภายในเมธอด และตัวแปรจะถูกทำลายเมื่อเมธอดเสร็จสิ้น

  • ตัวแปรอินสแตนซ์ − ตัวแปรอินสแตนซ์เป็นตัวแปรภายในคลาส แต่อยู่นอกเมธอดใดๆ ตัวแปรเหล่านี้จะเริ่มต้นเมื่อมีการสร้างอินสแตนซ์ของคลาส ตัวแปรอินสแตนซ์สามารถเข้าถึงได้จากภายในวิธีการใด ๆ ตัวสร้างหรือบล็อกของคลาสนั้น ๆ

  • ตัวแปรคลาส − ตัวแปรคลาสคือตัวแปรที่ประกาศภายในคลาส นอกเมธอดใดๆ ด้วยคีย์เวิร์ดคงที่

อินเทอร์เฟซ

อินเทอร์เฟซเป็นประเภทอ้างอิงใน Java มันคล้ายกับชั้นเรียน เป็นการรวบรวมวิธีการเชิงนามธรรม คลาสใช้อินเตอร์เฟส ดังนั้นจึงสืบทอดเมธอดนามธรรมของอินเตอร์เฟส

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

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

ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างคลาสและอินเทอร์เฟซ

ซีเนียร์ เลขที่
Key
คลาส
อินเทอร์เฟซ
1
วิธีการที่รองรับ
คลาสสามารถมีทั้งแบบนามธรรมและแบบรูปธรรม
อินเทอร์เฟซมีได้เฉพาะเมธอดนามธรรมเท่านั้น Java 8 เป็นต้นไป มันสามารถมีค่าเริ่มต้นเป็นวิธีการแบบคงที่
2
การสืบทอดหลายรายการ
ไม่รองรับการสืบทอดหลายรายการ
อินเทอร์เฟซรองรับการสืบทอดหลายรายการ
3
ตัวแปรที่รองรับ
รองรับตัวแปรสุดท้าย ไม่สุดท้าย คงที่และไม่คงที่
อนุญาตเฉพาะตัวแปรสแตติกและตัวแปรสุดท้ายเท่านั้น
4
การนำไปใช้
คลาสสามารถใช้อินเทอร์เฟซได้
อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซ แต่สามารถขยายอินเทอร์เฟซได้
5
คำหลัก
ประกาศคลาสโดยใช้คีย์เวิร์ดของคลาส
อินเทอร์เฟซถูกประกาศโดยใช้คำสำคัญอินเทอร์เฟซ
6
การสืบทอด
คลาสสามารถสืบทอดคลาสอื่นได้โดยใช้ส่วนขยายคำสำคัญและใช้งานอินเทอร์เฟซ
อินเทอร์เฟซสามารถสืบทอดได้เฉพาะอินเทอร์เฟซเท่านั้น
7
การสืบทอด
คลาสสามารถสืบทอดได้โดยใช้คีย์เวิร์ด extends
อินเทอร์เฟซสามารถใช้งานได้โดยใช้คีย์เวิร์ด Implement เท่านั้น
8
การเข้าถึง
คลาสสามารถมีสมาชิกประเภทใดก็ได้ เช่น ส่วนตัว สาธารณะ
อินเทอร์เฟซมีได้เฉพาะสมาชิกสาธารณะเท่านั้น
9
ตัวสร้าง
คลาสสามารถมีเมธอด Constructor ได้
อินเทอร์เฟซไม่สามารถมีตัวสร้างได้

ตัวอย่างคลาสเทียบกับอินเทอร์เฟซ

JavaTester.java

public class JavaTester {
   public static void main(String args[]) {
      Animal tiger = new Tiger();
      tiger.eat();
      Tiger tiger1 = new Tiger();
      tiger1.eat();
   }
}
interface Animal {
   public void eat();
}
class Tiger implements Animal {
   public void eat(){
      System.out.println("Tiger eats");
   }
}

ผลลัพธ์

Tiger eats
Tiger eats