ความแตกต่างระหว่าง Abstract Class กับ Interface ใน C # ความแตกต่างระหว่าง
คลาส abstract ดูเหมือนจะมีลักษณะเป็นส่วนติดต่อมาก แต่คอนเซ็ปต์นั้นค่อนข้างสับสนสำหรับผู้เริ่มต้นของ OOP Conceptually คลาสนามธรรมมีลักษณะเหมือนกับอินเทอร์เฟซแน่นอนไม่มีการใช้งาน แต่พวกเขามีส่วนแบ่งที่เท่าเทียมกันของความแตกต่าง ในขณะที่คลาสนามธรรมสามารถใช้งานได้ทั้งหมดหรือบางส่วนอินเตอร์เฟซต้องถูกนำมาใช้อย่างสมบูรณ์ ข้อแตกต่างที่สำคัญที่สุดระหว่างสองคือชั้นนามธรรมสามารถมีการใช้งานดีฟอลต์ในขณะที่อินเทอร์เฟซเป็นเพียงคำจำกัดความของวิธีการที่มีการประกาศสมาชิกเท่านั้น ลองหารือด้านทฤษฎีทั้งในรายละเอียด
บทคัดย่อคืออะไร?
คลาสนามธรรมเป็นคลาสพิเศษที่ทำหน้าที่เป็นฐานของชั้นเรียนอื่น ๆ และไม่สามารถสร้างขึ้นได้ ตรรกะการใช้งานของคลาสนามธรรมมาจากคลาสที่ได้รับ เพื่อให้เป็นนามธรรมแบบชั้นเรียนจะมีการใช้ "นามธรรม" การปรับเปลี่ยนซึ่งหมายความว่าการใช้งานที่ขาดหายไปบางอย่างต้องได้รับการดำเนินการในชั้นเรียนที่ได้รับมา มีสมาชิกทั้งนามธรรมและไม่เป็นนามธรรม คลาสนามธรรมมีวัตถุประสงค์เพื่อให้ฟังก์ชันพื้นฐานที่สามารถแชร์และแทนที่ด้วยชั้นเรียนที่ได้รับหลายรายการ เป็นประโยชน์ในการหลีกเลี่ยงการทำซ้ำรหัสใด ๆ มีลักษณะเป็นอินเทอร์เฟซมาก แต่มีฟังก์ชันเพิ่มเติม
อินเทอร์เฟซคืออะไร?
ส่วนติดต่อในทางกลับกันไม่ใช่คลาสที่มีเฉพาะลายเซ็นของฟังก์ชันการทำงาน เป็นรูปแบบที่ไม่มีการใช้งาน การพูดเชิงแนวคิดเป็นเพียงคำจำกัดความของวิธีการที่มีเพียงการประกาศสมาชิกเท่านั้น เป็นเปลือกที่ว่างเปล่าซึ่งไม่มีการใช้งานของสมาชิก เหมือนกับคลาสพื้นฐานนามธรรมที่มีเฉพาะสมาชิกเช่นวิธีการเหตุการณ์ indexers คุณสมบัติ ฯลฯ ไม่สามารถ instantiated โดยตรงและสมาชิกสามารถดำเนินการโดยชั้นใด นอกจากนี้อินเทอร์เฟซหลายแบบสามารถใช้งานได้โดยคลาส แต่คลาสสามารถสืบทอดชั้นเดียวได้
ความแตกต่างระหว่างคลาสบทคัดย่อและอินเทอร์เฟซใน C #Multiple Inheritance
- - คลาสสามารถใช้คลาสนามธรรมได้เพียงกลุ่มเดียวดังนั้นจึงไม่สนับสนุนการสืบทอดหลาย ๆ อินเทอร์เฟซสามารถรองรับการสืบทอดได้หลายแบบซึ่งหมายความว่าคลาสสามารถสืบทอดมรดกได้จำนวนมาก ความหมาย
- จาก ระดับนามธรรมและอินเทอร์เฟซใน C # - คลาสนามธรรมเป็นคลาสพิเศษซึ่งอาจมีความหมายโดยไม่มีการใช้งาน ตรรกะการใช้งานมาจากคลาสที่ได้รับ อาจมีวิธีการแบบนามธรรมและไม่เป็นนามธรรมอินเตอร์เฟซในทางกลับกันเป็นเพียงรูปแบบที่ไม่สามารถทำอะไร เทคนิคมันเป็นเพียงเปลือกว่างเปล่า การดำเนินการ
- - คลาสนามธรรมสามารถมีทั้งความหมายและการใช้งานได้ เป็นคลาสที่ไม่สมบูรณ์ซึ่งไม่สามารถสร้างขึ้นได้ อินเทอร์เฟซสามารถมีลายเซ็นของฟังก์ชันการทำงานได้โดยไม่มีรหัสใด ๆ
- Access Modifiers - คลาสนามธรรมสามารถมีตัวปรับการเข้าถึงได้หลายแบบเช่น subs, functions, properties ฯลฯ ในขณะที่ interface ไม่ได้รับอนุญาตให้มีการปรับเปลี่ยนการเข้าใช้งานและวิธีการทั้งหมดจะต้องถูกกำหนดให้เป็น public โดยปริยาย ความสม่ำเสมอ
- - คลาสที่ใช้นามธรรมจะใช้สำหรับการใช้งานประเภทเดียวกันลักษณะการทำงานและสถานะในขณะที่อินเทอร์เฟซใช้สำหรับการใช้งานที่ใช้ร่วมกันเพียงลายเซ็น คำประกาศ
- - คลาสนามธรรมทำหน้าที่เป็นคลาสพื้นฐานสำหรับคลาสอื่น ๆ ทั้งหมดเพื่อที่จะสามารถประกาศหรือใช้ตัวแปรใดก็ได้ในขณะที่อินเทอร์เฟซไม่ได้รับอนุญาตให้ประกาศตัวแปรใด ๆ Constructor Declaration
- - ในขณะที่คลาสนามธรรมสามารถมีการประกาศคอนสตรัคเตอร์อินเทอร์เฟซไม่สามารถมีการประกาศคอนสตรัค Core vs. Peripheral
- - คลาสนามธรรมถูกใช้เพื่อกำหนดเอกลักษณ์หลักของคลาสและสามารถใช้สำหรับอ็อบเจ็กต์ของชนิดข้อมูลเดียวกันได้ อินเทอร์เฟซเป็นอีกทางหนึ่งที่ใช้ในการกำหนดความสามารถในการต่อพ่วงของคลาส Rigid vs. Supple
- - คลาสนามธรรมมีความนุ่มนวลในแง่ของฟังก์ชันการใช้งานอย่างน้อยจากมุมมองของนักพัฒนาซอฟต์แวร์ในขณะที่ส่วนติดต่อมีความเข้มงวดมากขึ้น คลาสบทคัดย่อและอินเทอร์เฟซ: แบบฟอร์มตาราง
คลาสนามธรรม
อินเทอร์เฟซ |
คลาส abstract อาจมีการปรับเปลี่ยนการเข้าถึงทั้งหมดสำหรับการประกาศสมาชิกของฟังก์ชัน subs และ properties |
อินเทอร์เฟซไม่ได้รับอนุญาตให้มีการปรับเปลี่ยนการเข้าถึงสำหรับการประกาศสมาชิกของฟังก์ชันย่อยคุณสมบัติ ฯลฯ สมาชิกทั้งหมดจะถือว่าเป็นสาธารณะโดยปริยาย | คลาสสามารถใช้คลาสที่เป็นนามธรรมได้มากที่สุด |
คลาสอาจสืบทอดจำนวนของอินเทอร์เฟซใด ๆ | มรดกหลายรายการไม่ได้รับการสนับสนุนในชั้นนามธรรม |
อินเทอร์เฟซอาจสนับสนุนการสืบทอดหลาย ๆ | เทคนิคเป็นคลาสที่อาจมีหรือไม่มีคำจำกัดความและการใช้งาน |
อินเทอร์เฟซสามารถมีลายเซ็นต์ของฟังก์ชันการทำงานได้ดังนั้นจึงเป็นส่วนที่ว่างเปล่า | คลาสนามธรรมสามารถมีสมาชิกได้ consts, methods ที่กำหนดไว้และ stubs ของ method |
อินเทอร์เฟซสามารถมีเฉพาะวิธีการและ consts เท่านั้น | กำหนดอัตลักษณ์หลักของคลาสและใช้ในการอธิบายอ็อบเจ็กต์ของชนิดข้อมูลเดียวกัน |
ใช้เพื่ออธิบายถึงความสามารถในการต่อพ่วงของชั้นเรียน | สมาชิกของคลาสนามธรรมจะไม่สามารถเป็นแบบคงที่จนกว่าจะเป็นสมาชิกที่สมบูรณ์ |
สมาชิกของอินเทอร์เฟซไม่สามารถเป็นแบบสแตติก | เหมาะสำหรับการใช้งานประเภทเดียวกันและพฤติกรรมทั่วไป |
ใช้อินเทอร์เฟซที่ดีกว่าถ้ามีการใช้งานร่วมกันหลายรูปแบบร่วมกันเพียงลายเซ็น | สามารถมีการประกาศ constructor |
ไม่สามารถสร้างประกาศผู้สร้างได้ | คลาสนามธรรมมีฟิลด์ที่กำหนดไว้ล่วงหน้าและ constrants |
ฟิลด์ไม่สามารถกำหนดได้ในอินเทอร์เฟซ | สามารถมีทั้งวิธีนามธรรมและไม่ใช่นามธรรม |
สามารถมีวิธีการแบบ abstract เท่านั้น | สรุป |