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

Anonim

คลาสบทคัดย่อและคลาสคอนกรีต

ภาษาโปรแกรมเชิงวัตถุที่นิยมใช้กันมากเช่น Java และ C # เป็น class based พวกเขาบรรลุแนวคิดเชิงวัตถุเช่นการห่อหุ้มมรดกและความแตกต่างโดยการใช้ชั้นเรียน คลาสเป็นนามธรรมของวัตถุในโลกแห่งความเป็นจริง ชั้นเรียนสามารถเป็นรูปธรรมหรือนามธรรมได้ขึ้นอยู่กับระดับของการใช้งานฟังก์ชันวิธีการ คลาสคอนกรีตจะใช้วิธีการทั้งหมดได้อย่างสมบูรณ์ คลาสนามธรรมอาจถือได้ว่าเป็นคลาสแบบปกติ (คอนกรีต) ซึ่งอาจมีวิธีการดำเนินการบางส่วน โดยปกติแล้วคลาสคอนกรีตจะเรียกว่าคลาส (just)

คลาสคอนกรีตคืออะไร?

คลาสดีฟอลต์คือคลาสคอนกรีต คำหลักของชั้นเรียนใช้เพื่อกำหนดชั้นเรียน (เช่นกรัมใน Java) และโดยปกติแล้วพวกเขาจะเรียกว่าคลาส (โดยไม่มีคำคุณศัพท์) เรียนคอนกรีตแสดงถึงการแสดงถึงแนวคิดของวัตถุในโลกแห่งความเป็นจริง ชั้นเรียนมีคุณสมบัติที่เรียกว่าแอตทริบิวต์ ใช้แอตทริบิวต์เป็นตัวแปรส่วนกลางและอินสแตนซ์ วิธีการในชั้นเรียนแสดงหรือกำหนดพฤติกรรมของชั้นเรียนเหล่านี้ วิธีการและคุณลักษณะของชั้นเรียนเรียกว่าสมาชิกของคลาส โดยปกติแล้วการ encapsulation ทำได้โดยทำให้แอตทริบิวต์เป็นแบบส่วนตัวในขณะที่สร้างวิธีการของสาธารณะที่สามารถใช้เพื่อเข้าถึงคุณลักษณะเหล่านั้นได้ วัตถุเป็นอินสแตนซ์ของคลาส การสืบทอดช่วยให้ผู้ใช้สามารถขยายชั้นเรียน (เรียกว่าคลาสย่อย) จากชั้นเรียนอื่น ๆ (เรียกว่า super classes) Polymorphism อนุญาตให้โปรแกรมเมอร์แทนวัตถุของคลาสแทนวัตถุระดับซุปเปอร์ โดยปกติคำนามที่พบในคำจำกัดความของปัญหาโดยตรงกลายเป็นชั้นเรียนในโปรแกรม และในทำนองเดียวกันกริยากลายเป็นวิธีการ ภาครัฐเอกชนและได้รับการคุ้มครองเป็นตัวปรับการเข้าถึงทั่วไปที่ใช้สำหรับการเรียน

บทคัดย่อคืออะไร?

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

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

อะไรคือความแตกต่างระหว่าง Abstract Class กับ Concrete Class?

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