ความแตกต่างระหว่าง Virtual และ Abstract

Anonim

บทคัดย่อ Virtual & Abstract

เสมือนจริงและบทคัดย่อเป็นคำหลักสองคำที่ใช้ในภาษาโปรแกรมเชิงวัตถุ (Object Oriented หรือ OO) ส่วนใหญ่เช่น Java และ C # แม้ว่าจะมีความแตกต่างเล็กน้อยในความหมายในภาษาต่างๆ แต่คำหลักทั้งแบบเสมือนและบทคัดย่อจะให้ความสำคัญกับการใช้งานบางส่วนกับหน่วยงานที่ตนยึดถือ

บทคัดย่อ

โดยทั่วไปแล้วคลาสบทคัดย่อหรือที่เรียกว่า Abstract Base Classes (ABC) ไม่สามารถสร้างอินเทอร์แอกทีฟ (ไม่สามารถสร้างอินสแตนซ์ของคลาสนั้นได้) ดังนั้นชั้นบทคัดย่อมีความหมายเฉพาะถ้ามีภาษาเขียนโปรแกรมรองรับการสืบทอด (ความสามารถในการสร้างคลาสย่อยจากการขยายชั้น) บทคัดย่อมักแสดงแนวคิดหรือเอนทิตี้แบบนามธรรมโดยใช้บางส่วนหรือไม่มีเลย ดังนั้นคลาสบทคัดย่อจึงทำหน้าที่เป็นชั้นผู้ปกครองซึ่งมาจากชั้นเรียนย่อย ๆ เพื่อที่ชั้นเรียนย่อยจะแชร์คุณสมบัติที่ไม่สมบูรณ์ของชั้นผู้ปกครองและฟังก์ชันการทำงานที่สามารถเพิ่มให้เสร็จสมบูรณ์ได้ บทคัดย่อชั้นเรียนอาจมีวิธีการแบบนามธรรม Subclasses ที่ขยายคลาสนามธรรมอาจใช้ method Abstract (สืบทอด) เหล่านี้ ถ้าชั้นลูกใช้วิธีนามธรรมทั้งหมดดังกล่าวเป็นชั้นคอนกรีต แต่ถ้าไม่เช่นนั้นคลาสย่อยจะกลายเป็นคลาส Abstract ทั้งหมดนี้หมายความว่าเมื่อโปรแกรมเมอร์เสนอชื่อคลาสเป็นบทคัดย่อเธอบอกว่าชั้นเรียนจะไม่สมบูรณ์และจะมีองค์ประกอบที่จำเป็นต้องทำโดยชั้นเรียนที่สืบทอดมา นี่เป็นวิธีที่ดีในการสร้างสัญญาระหว่างสองโปรแกรมเมอร์ซึ่งช่วยลดความยุ่งยากในการพัฒนาซอฟต์แวร์ โปรแกรมเมอร์ที่เขียนโค้ดเพื่อสืบทอดต้องปฏิบัติตามคำจำกัดความของคำจำกัดความ (แต่แน่นอนว่าจะสามารถใช้งานได้เอง) ใน Java และ C # คลาสบทและวิธีการต่างๆจะถูกใช้โดยใช้คำสำคัญ Abstract

<->

Virtual

เสมือน / ฟังก์ชั่นให้ความสามารถในการเลือกที่จะทับพฤติกรรมโดยชั้นสืบทอด (โดยใช้ฟังก์ชันที่มีลายเซ็นเดียวกัน) แนวคิดของฟังก์ชันเสมือนเป็นสิ่งสำคัญในสถานการณ์ต่อไปนี้ สมมติว่าชั้นมาจากคลาสย่อยแล้วเมื่อใดก็ตามที่มีการใช้อ็อบเจ็กต์ของคลาสที่ได้รับมาอาจอ้างอิงถึงออบเจ็กต์ของคลาสพื้นฐานหรือคลาสที่ได้รับ แต่ลักษณะการทำงานของเมธอดเมตาอาจไม่ชัดเจนถ้าเมธอดระดับฐานถูกแทนที่ ดังนั้นเพื่อที่จะแก้ไขความกำกวมนี้คำหลักเสมือนถูกนำมาใช้ ถ้าเมธอดถูกทำเครื่องหมายว่าเป็นเสมือนฟังก์ชันคลาที่ได้รับจะเรียกว่า (ถ้ามี) หรือฟังก์ชันฐานข้อมูลถูกเรียกใช้ ตัวอย่างเช่นใน C + + คำหลักเสมือนถูกใช้เพื่อการนี้ ใน C # คำสำคัญเสมือนจะถูกใช้ในลักษณะคล้ายกัน แต่นอกจากนี้ควรใช้การแทนที่คำหลักเพื่อแก้ไขวิธีแทนที่ทั้งหมดแต่ใน Java ไม่มีคำหลัก Virtual ที่ชัดเจน วิธีการทั้งหมดที่ไม่ใช่แบบสแตติกถือว่าเป็นเสมือน ฟังก์ชั่นเสมือนจริงที่ไม่มีเนื้อหาเรียกว่า Pure Virtual functions ใน Java และ C # วิธีการแบบนามธรรมมีอยู่จริง Pure Virtual

ความแตกต่างระหว่างบทคัดย่อเสมือนจริงและบทคัดย่อ

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