แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

MyCircle ระดับนามธรรม {พื้นที่สาธารณะ int นามธรรม (); } Class MyArea: MyCircle {public override int Area () {ด้านกลับ * ด้าน; ..... }}
1 2 3 4 5 6 7 8 9 10 11MyCircle ระดับนามธรรม {พื้นที่สาธารณะ int นามธรรม (); } Class MyArea: MyCircle {public override int Area () {ด้านกลับ * ด้าน; . . . . . }}

ดังที่แสดงในตัวอย่างข้างต้นเมธอด abstract 'Area' ภายในคลาส MyCircle ถูกแทนที่ใน MyArea คลาสที่ได้รับ

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

ตัวอย่างส่วนต่อประสานใน C #:

ใช้ System.Collections.Generic; ใช้ System.Linq; ใช้ System.Text; namespace MyName {public interface MyData {void getdata (); โมฆะ showdata (); } ชื่อคลาสสาธารณะ: MyData {public double getdata () {ชื่อสตริง; Console.WriteLine ("ป้อนชื่อ:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("ชื่อของฉันคือ:", ชื่อ); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22ใช้ระบบ ของสะสม ทั่วไป; ใช้ระบบ Linq; ใช้ระบบ ข้อความ; namespace MyName {public interface MyData {void getdata (); โมฆะ showdata (); } ชื่อคลาสสาธารณะ: MyData {public double getdata () {ชื่อสตริง; คอนโซล WriteLine ("ป้อนชื่อ:"); name = Console ReadLine (); } public void showdata () {Console WriteLine ("ชื่อของฉันคือ:", ชื่อ); }}}

ดังที่แสดงในตัวอย่างข้างต้นส่วนต่อประสาน MyData มีสองวิธีการประกาศ getdata () และ showdata () คลาส NameData ที่ใช้งานอินเทอร์เฟซนี้ควรให้คำจำกัดความของวิธีการที่ประกาศในอินเทอร์เฟซ MyData

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

  1. คลาสนามธรรมสามารถมีนามธรรมได้เช่นเดียวกับสมาชิกที่ไม่เป็นนามธรรม แต่ในอินเทอร์เฟซสมาชิกทั้งหมดเป็นนามธรรมโดยปริยายและจะต้องถูกแทนที่ในชั้นเรียน
  2. คลาสอาจรับช่วงต่อหลายอินเตอร์เฟส แต่มีเพียงคลาสนามธรรมเท่านั้น
  3. คลาสนามธรรมสามารถมีวิธีการที่มีหรือมีความหมาย แต่อินเทอร์เฟซสามารถมีลายเซ็นวิธีเท่านั้น
  4. คลาสนามธรรมสามารถดำเนินการได้อย่างสมบูรณ์เพียงบางส่วนหรือไม่ได้เลย แต่ควรจะใช้อินเทอร์เฟซทั้งหมดเช่นสมาชิกทุกคนจะต้องกำหนดในชั้นเรียนที่ได้รับ
  5. อินเทอร์เฟซไม่สามารถมีตัวดัดแปลงการเข้าถึงได้ แต่คลาสนามธรรมสามารถมีฟังก์ชันคุณสมบัติหรือเหตุการณ์
Top