ความแตกต่างระหว่างคลาสนามธรรมและส่วนต่อประสานใน C # (พร้อมตาราง)

สารบัญ:

Anonim

เมื่อออกแบบแอปพลิเคชันหรือเริ่มต้นอาชีพการเขียนโปรแกรม จำเป็นต้องทราบความแตกต่างระหว่าง Abstract Class และ Interface ใน C# ทั้งคลาสนามธรรมและอินเทอร์เฟซใช้เพื่อทำให้เป็นนามธรรมซึ่งเราสามารถเข้าใจวิธีการนามธรรมได้ แม้ว่าจะไม่สามารถใช้งานได้พร้อมกัน

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

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

คลาสนามธรรมเทียบกับส่วนต่อประสานใน C #

NS ความแตกต่างระหว่าง Abstract Class และ Interface ใน C # คือฟังก์ชัน "หลัก" ของคลาสนามธรรมคือการอธิบายเอกลักษณ์ที่แท้จริงของคลาสในขณะที่ฟังก์ชันหลักของอินเทอร์เฟซคือการอธิบายความเป็นไปได้ภายนอกของคลาส คลาสนามธรรมไม่ได้จัดเตรียมโดยคลาสนามธรรมในขณะที่อินเทอร์เฟซสามารถให้นามธรรมเต็มรูปแบบ

การสืบทอดหลายรายการเป็นไปไม่ได้ในคลาสนามธรรมในขณะที่อินเทอร์เฟซสามารถสร้างการสืบทอดหลายรายการได้

ตารางเปรียบเทียบระหว่างคลาสนามธรรมและส่วนต่อประสานใน C #

พารามิเตอร์ของการเปรียบเทียบ คลาสนามธรรม อินเทอร์เฟซใน C #
ฟังก์ชั่น การเพิ่มวิธีการใหม่ให้กับคลาสนามธรรมจะทำให้มีตัวเลือกในการใช้งานเริ่มต้นและโค้ดปัจจุบันทั้งหมดจะทำงานอย่างถูกต้อง การเพิ่มวิธีการใหม่ให้กับอินเทอร์เฟซจะช่วยให้สามารถติดตามการใช้งานอินเทอร์เฟซทั้งหมดและกำหนดการใช้งานสำหรับวิธีการล่าสุด
มรดกต่างๆ คลาสนามธรรมเพียงหนึ่งคลาสเท่านั้นที่สามารถสืบทอดโดยคลาส หลายอินเตอร์เฟสอาจถูกสืบทอดโดยคลาส
สิ่งที่พวกเขามี? คลาสนามธรรมประกอบด้วยสมาชิกข้อมูลและตัวสร้าง อินเทอร์เฟซใน C # ไม่มี Data Member และ Constructors
จัดเตรียม คลาสนามธรรมสามารถจัดเตรียมโค้ดเริ่มต้นแบบเต็มและ/หรือรายละเอียดที่ควรแทนที่ อินเทอร์เฟซใน C # ไม่สามารถให้รหัสใด ๆ ได้เพียงแค่ลายเซ็น
อัตราการเคลื่อนไหว คลาสนามธรรมนั้นรวดเร็วเมื่อพูดถึงความเร็ว อินเทอร์เฟซใน C# ต้องการเวลามากขึ้นในการรับเมธอดจริงในคลาสที่เกี่ยวข้อง

คลาสนามธรรมใน C # คืออะไร

คลาสนามธรรมเป็นสิ่งที่สามารถมุ่งหมายให้เป็นคลาสพื้นฐานของคลาสอื่นเท่านั้น เป็นคลาสที่มีเมธอดนามธรรมอย่างน้อยหนึ่งวิธี วิธีการเชิงนามธรรมเรียกว่าวิธีการที่ประกาศ แต่ไม่มีการดำเนินการใด ๆ

ในการสร้างคลาส เราต้องใช้ตัวปรับแต่ง 'abstract' ตัวดัดแปลงนี้บ่งชี้ว่าอาจมีการใช้งานที่ขาดหายไปเล็กน้อยซึ่งจะต้องนำไปปฏิบัติในคลาสที่นำมาจากมัน ทั้งสมาชิกที่เป็นนามธรรมและไม่เป็นนามธรรมสามารถมีอยู่ในคลาสนามธรรมได้

คลาสนามธรรมนี้ควรมีวิธีการที่เป็นนามธรรมอย่างน้อยหนึ่งวิธีซึ่งได้กล่าวถึงข้างต้นแล้ว หากไม่มีเมธอด เราไม่สามารถประกาศคลาสนั้นเป็นคลาส "นามธรรม" ได้

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

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

เราสามารถพูดได้ว่าจุดประสงค์ของคลาสนามธรรมคือการจัดเตรียมนิยามคลาสพื้นฐาน

อินเทอร์เฟซใน C # คืออะไร

ในทางกลับกัน อินเทอร์เฟซไม่ใช่คลาสที่มีเพียงข้อบ่งชี้การทำงานเท่านั้น เราเรียกมันว่าแบบแผนโดยไม่มีการนำไปปฏิบัติก็ได้ ในทางทฤษฎี เป็นเพียงนิยามของวิธีการที่มีการประกาศสมาชิกเท่านั้น

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

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

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

ความแตกต่างหลักระหว่างคลาสนามธรรมและส่วนต่อประสานใน C #

คำถามที่พบบ่อย (FAQ) เกี่ยวกับ Abstract Class และ Interface ใน C#

การใช้คลาสนามธรรมใน C # คืออะไร?

C# เป็นภาษาโปรแกรมเชิงวัตถุวัตถุประสงค์ทั่วไป มันมาจากไมโครซอฟต์ จุดประสงค์หลักของ C# คือการใช้พลังประมวลผลของ C++ ด้วยความง่ายในการเขียนโปรแกรมของ Virtual Basic โดยส่วนใหญ่จะใช้ C++ และยังมีคุณสมบัติที่คล้ายคลึงกันกับ Java

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

โดยพื้นฐานแล้วจะจัดเตรียมพิมพ์เขียวให้กับคลาสที่ได้รับและให้คำแนะนำเกี่ยวกับสิ่งที่จะนำไปใช้โดยคลาสที่ได้รับเมื่อคลาสนามธรรมได้รับการสืบทอดมาจากคลาสเหล่านั้น

อินเทอร์เฟซใน C # คืออะไรและทำไมจึงใช้

อินเทอร์เฟซใน C # สามารถกำหนดเป็นคำจำกัดความประเภทเช่นคลาส แต่มันให้การประกาศเท่านั้นและได้รับการสืบทอดโดยคลาสและโครงสร้าง

ใช้กับคลาสเพื่อกำหนดสัญญา (ข้อตกลงเกี่ยวกับสิ่งที่คลาสจัดเตรียมให้กับแอปพลิเคชัน) มันประกาศเฉพาะเมธอดและคุณสมบัติต่าง ๆ และคลาสจะกำหนดว่าเมธอดจะทำอะไรจริง ๆ

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

ความแตกต่างใน C # คืออะไร?

ความหลากหลายมักจะแสดงเป็นอินเทอร์เฟซเดียวและหลายฟังก์ชัน Polymorphism ใน C # หมายถึงการให้ความสามารถในการใช้หลายรูปแบบ หลังจากการห่อหุ้มและการสืบทอด เป็นแนวคิดหลักอีกประการหนึ่งของการเขียนโปรแกรมเชิงวัตถุ C# ให้ความสามารถในการใช้คลาสต่าง ๆ ของการใช้วิธีการต่าง ๆ ซึ่งมักจะเรียกด้วยชื่อเดียวกัน

Polymorphisms มีสองประเภทใน C #:

บทสรุป

การทำความเข้าใจความแตกต่างระหว่างทั้งสองเป็นงานที่ค่อนข้างยาก เราสามารถรวมข้อมูลทั้งหมดที่หาได้ แต่ก็ยังไม่เพียงพอ ในทางทฤษฎี คำศัพท์ทั้งสองเป็นคำศัพท์ที่สำคัญที่สุดในการเขียนโปรแกรมและค่อนข้างคล้ายกัน แต่ในแง่ของการใช้งานนั้นแตกต่างกันมาก

ในขณะที่คลาสนามธรรมเป็นคลาสบางประเภทที่จะทำงานเป็นพื้นฐานสำหรับคลาสอื่น อินเตอร์เฟสจะเป็นเชลล์ว่างที่มีการประกาศเฉพาะสมาชิกเท่านั้น

อ้างอิง

ความแตกต่างระหว่างคลาสนามธรรมและส่วนต่อประสานใน C # (พร้อมตาราง)