Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

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


บทความนี้เปรียบเทียบ Abstract Class และ Interface ใน Java และ C#

Abstract Class

  • มีทั้ง Declaration และ Definition (Implementation)
  • ไม่รองรับ Multiple Inheritance โดยตรง
  • มี Constructor
  • อาจมี Static Members
  • รองรับ Access Modifiers หลายแบบ (public, private, protected)
  • Performance ดี (รวดเร็ว)
  • ใช้ Implement Core Identity/Functionality ของ Class
  • Class ใช้ Abstract Class ได้เพียง 1 ตัว
  • เหมาะเมื่อหลาย Implementation เหมือนกันและมี Common Behavior
  • ประกอบด้วย Methods, Fields, Constants
  • อาจ Fully Implemented, Partially Implemented, หรือ Not Implemented

Interface

  • มี Declaration เท่านั้น (ไม่มี Implementation - จนกว่าจะมี Default Methods ใน Java 8+ / C# 8+)
  • บรรลุ Multiple Inheritance ได้
  • ไม่มี Constructor
  • ไม่มี Static Fields (แต่มี Static Methods ในรุ่นใหม่)
  • Member ทั้งหมดเป็น Public โดยปริยาย
  • Performance ไม่ดีนัก (ช้ากว่า Abstract Class เล็กน้อย)
  • ใช้ Implement Peripheral Abilities (ความสามารถรอง)
  • Class ใช้ Interface ได้หลายตัว
  • เหมาะเมื่อหลาย Implementation แชร์ Methods
  • ประกอบด้วย Methods เท่านั้น (ก่อนรุ่นใหม่)
  • ต้อง Fully Implemented (โดย Class ที่ Implement)