ความแตกต่างระหว่างองค์ประกอบและการสืบทอด (พร้อมตาราง)

สารบัญ:

Anonim

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

องค์ประกอบเทียบกับมรดก

ความแตกต่างระหว่างองค์ประกอบและการสืบทอดคือการที่องค์ประกอบใช้ในการสร้างคลาสที่มีความสัมพันธ์แบบ "has-a" แทนที่จะเป็นความสัมพันธ์ "is-a" เช่นเดียวกับการสืบทอด การสืบทอดช่วยให้ฟังก์ชันของสมาชิกในคลาสหนึ่งกลายเป็นคุณสมบัติของอีกคลาสหนึ่งโดยไม่ต้องเขียนโค้ดในคลาสโดยตรง

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

ใน OOP การสืบทอดหมายถึงกระบวนการที่เอนทิตีหนึ่งได้มาซึ่งคุณสมบัติของอีกบุคคลหนึ่ง เป็นหนึ่งในวิธีที่มีประสิทธิภาพที่สุดในการบังคับใช้โค้ดซ้ำใน OOP คลาสใหม่อาจเกิดขึ้นได้โดยการสร้างความสัมพันธ์แบบ parent-child กับคลาสปัจจุบันโดยใช้การสืบทอด คลาสสามารถสืบทอดสถานะและพฤติกรรมที่ใช้บ่อยจากคลาสอื่น ๆ บางส่วนอันเนื่องมาจากการคำนวณเชิงวัตถุ

ตารางเปรียบเทียบระหว่างองค์ประกอบและการสืบทอด

พารามิเตอร์ของการเปรียบเทียบ

องค์ประกอบ

มรดก

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

องค์ประกอบคืออะไร?

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

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

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

มรดกคืออะไร?

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

หากเราต้องการสร้างคลาสใหม่ แต่ดูเหมือนว่าจะมีคลาสหนึ่งที่มีโค้ดที่เราต้องการ เราอาจแยกคลาสใหม่ออกจากคลาสปัจจุบัน เราสามารถนำคุณสมบัติและเมธอดของคลาสปัจจุบันกลับมาใช้ใหม่ได้ แทนที่จะเขียนเอง คลาสย่อยสืบทอดตัวแทนของซูเปอร์คลาสส่วนใหญ่ ตัวสร้างไม่ใช่ผู้เข้าร่วม ดังนั้นจึงไม่ส่งต่อไปยังคลาสย่อย แต่ฟังก์ชัน Object() ของซูเปอร์คลาส Object() { [native code] } สามารถเรียกได้จากซับคลาส

ความแตกต่างหลักระหว่างองค์ประกอบและการสืบทอด

บทสรุป

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

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

ความแตกต่างระหว่างองค์ประกอบและการสืบทอด (พร้อมตาราง)