คลาสนามธรรมเป็นคลาสที่มีวัตถุประสงค์เพื่อเป็นคลาสพื้นฐานของคลาสอื่นเท่านั้น โมดิฟายเออร์ 'abstract' ใช้เพื่อสร้างคลาสนามธรรม ตัวดัดแปลงที่เป็นนามธรรมบ่งชี้ว่ามีการนำไปใช้งานที่ขาดหายไปซึ่งจำเป็นต้องนำไปใช้ในคลาสที่ได้รับมาจากมัน ชั้นนามธรรมสามารถมีสมาชิกที่เป็นนามธรรมและไม่ใช่นามธรรม คลาสนามธรรมควรมีวิธีนามธรรมอย่างน้อยหนึ่งวิธีมิฉะนั้นจะไม่มีประโยชน์ในการประกาศคลาสนั้นว่าเป็น 'นามธรรม'
ตัวอย่างคลาสนามธรรมใน C #:
MyCircle ระดับนามธรรม {พื้นที่สาธารณะ int นามธรรม (); } Class MyArea: MyCircle {public override int Area () {ด้านกลับ * ด้าน; ..... }}1 2 3 4 5 6 7 8 9 10 11 | MyCircle ระดับนามธรรม {พื้นที่สาธารณะ 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
ความแตกต่างระหว่างคลาสนามธรรมและอินเตอร์เฟส
- คลาสนามธรรมสามารถมีนามธรรมได้เช่นเดียวกับสมาชิกที่ไม่เป็นนามธรรม แต่ในอินเทอร์เฟซสมาชิกทั้งหมดเป็นนามธรรมโดยปริยายและจะต้องถูกแทนที่ในชั้นเรียน
- คลาสอาจรับช่วงต่อหลายอินเตอร์เฟส แต่มีเพียงคลาสนามธรรมเท่านั้น
- คลาสนามธรรมสามารถมีวิธีการที่มีหรือมีความหมาย แต่อินเทอร์เฟซสามารถมีลายเซ็นวิธีเท่านั้น
- คลาสนามธรรมสามารถดำเนินการได้อย่างสมบูรณ์เพียงบางส่วนหรือไม่ได้เลย แต่ควรจะใช้อินเทอร์เฟซทั้งหมดเช่นสมาชิกทุกคนจะต้องกำหนดในชั้นเรียนที่ได้รับ
- อินเทอร์เฟซไม่สามารถมีตัวดัดแปลงการเข้าถึงได้ แต่คลาสนามธรรมสามารถมีฟังก์ชันคุณสมบัติหรือเหตุการณ์