ความแตกต่างระหว่างการโอเวอร์โหลดและการเอาชนะ | โอเวอร์โหลด vs โอเวอร์ไรด์
เผยแพร่แล้ว: 2021-06-15สารบัญ
บทนำ
การเขียนโปรแกรมเชิงวัตถุมีบทบาทสำคัญในภาคการพัฒนาซอฟต์แวร์ แนวคิดหลายอย่างเกี่ยวข้องกับการเขียนโปรแกรมประเภทนี้ เช่น คลาส วัตถุ ความหลากหลาย การสืบทอด การแยกข้อมูล การเขียนโปรแกรมทั่วไป และการจัดการพิเศษ
นักพัฒนามักพบว่าแนวคิดของความหลากหลายนั้นค่อนข้างน่าสนใจซึ่งมีแนวคิดย่อย เช่น วิธีการโอเวอร์โหลด วิธีการแทนที่ ฯลฯ อย่างไรก็ตาม เพื่อให้เข้าใจแนวคิดของความหลากหลายดีขึ้น ความ แตกต่างระหว่างการโอเวอร์โหลดและการเอาชนะ จะต้องเข้าใจ
ความแตกต่างระหว่างการโอเวอร์โหลดวิธีการและการเอาชนะวิธีการ
มีความแตกต่างมากมายระหว่าง การโอเวอร์โหลดเมธอดและ การ แทนที่เมธอด รายการความแตกต่างระหว่าง วิธีการโอเวอร์โหลดและการแทนที่ใน java มีการจัดตารางด้านล่าง:
วิธีการโอเวอร์โหลด | วิธีการเอาชนะ | |
1 | วิธีนี้ใช้สำหรับเพิ่มความสามารถในการอ่านของโปรแกรม | เมธอดนี้ใช้เพื่อจัดเตรียมการใช้งานเมธอดที่ซูเปอร์คลาสจัดเตรียมไว้ให้ |
2 | จะดำเนินการในชั้นเรียน | เกิดขึ้นในสองคลาสที่มีความสัมพันธ์แบบ IS-A (มรดก) จำเป็นต้องมีฐานและคลาสย่อยสำหรับการแทนที่ |
3 | เมธอดหรือฟังก์ชันต้องมีชื่อและลายเซ็นต่างกัน | เมธอดหรือฟังก์ชันต้องมีชื่อและลายเซ็นเหมือนกัน |
4 | พารามิเตอร์ที่ใช้ในวิธีนี้ควรแตกต่างกัน | ควรใช้พารามิเตอร์เดียวกันในกรณีของการแทนที่เมธอด |
5 | เป็นตัวอย่างของความหลากหลายในการคอมไพล์เวลา การโยงของเมธอดโอเวอร์โหลดไปยังคำจำกัดความจะเกิดขึ้นในเวลาคอมไพล์ | เป็นตัวอย่างของความแตกต่างระหว่างรันไทม์ การโยงของการเรียกใช้เมธอดที่ถูกแทนที่ไปยังคำจำกัดความจะเกิดขึ้นในขณะทำงาน |
6 | เฉพาะการเปลี่ยนประเภทการส่งคืนเท่านั้น ไม่สามารถดำเนินการวิธีการโอเวอร์โหลดได้ ประเภทการส่งคืนอาจแตกต่างกันหรือเหมือนกัน แต่พารามิเตอร์ควรแตกต่างกัน | ชนิดส่งคืนในการแทนที่เมธอดอาจเป็นแบบเดียวกันหรือแบบโควาเรียนต์ |
7 | การโอเวอร์โหลดเมธอดอาจถูกนำไปใช้กับเมธอดแบบคงที่ ซึ่งหมายความว่าคลาสสามารถมีเมธอดแบบสแตติกที่มีชื่อเดียวกันได้มากกว่าหนึ่งเมธอด | ไม่สามารถใช้การแทนที่เมธอดกับเมธอดแบบคงที่ได้ |
8 | กำลังใช้การผูกแบบคงที่สำหรับการโอเวอร์โหลดเมธอด | กำลังใช้การเชื่อมโยงแบบไดนามิกสำหรับการแทนที่เมธอด |
9 | ประสิทธิภาพที่ดีขึ้นนั้นมาจากวิธีการโอเวอร์โหลด | ประสิทธิภาพน้อยกว่าเมื่อเทียบกับวิธีการโอเวอร์โหลด เหตุผลก็คือการเชื่อมโยงของเมธอดที่ถูกแทนที่กำลังดำเนินการอยู่ขณะรันไทม์ |
10 | วิธีส่วนตัวและสุดท้ายสามารถโอเวอร์โหลดได้ คลาสสามารถมีเมธอดส่วนตัว/ขั้นสุดท้ายที่มีชื่อเดียวกันได้มากกว่าหนึ่งวิธี | วิธีส่วนตัวและสุดท้ายไม่สามารถแทนที่ได้ คลาสย่อยไม่สามารถแทนที่เมธอดส่วนตัว/ขั้นสุดท้ายของคลาสพื้นฐานได้ |
11 | การสืบทอดอาจหรือไม่จำเป็นในกรณีที่วิธีการโอเวอร์โหลด | การสืบทอดจำเป็นเสมอในกรณีที่มีการแทนที่เมธอด |
12 | ใช้เพื่อเพิ่มพฤติกรรมของเมธอดมากขึ้น | ใช้เพื่อเปลี่ยนพฤติกรรมของวิธีการที่มีอยู่ |
13 | ไม่จำเป็นต้องมีมากกว่าหนึ่งคลาสในเมธอดโอเวอร์โหลด | จำเป็นต้องมีอย่างน้อยสองคลาสเสมอในการแทนที่เมธอด |
14 | หากเกิดการโอเวอร์โหลด ข้อผิดพลาดเวลาคอมไพล์จะเกิดขึ้นและแก้ไขได้ง่าย | หากการแทนที่การหยุดทำงาน อาจทำให้เกิดปัญหาร้ายแรงในโปรแกรมของเรา เนื่องจากเอฟเฟกต์จะมองเห็นได้ในขณะใช้งานจริง |
15 | วิธีการโอเวอร์โหลดต้องมีลายเซ็นที่แตกต่างกัน | วิธีการแทนที่ต้องมีลายเซ็นเดียวกัน |
16 | ตัวแก้ไขการเข้าถึงในวิธีการโอเวอร์โหลดอาจเป็นอะไรก็ได้หรือต่างกัน | ตัวแก้ไขการเข้าถึงของเมธอดย่อยต้องเหมือนกันหรือสูงกว่าตัวแก้ไขการเข้าถึงเมธอด superclass ในเมธอดการแทนที่ |
17 | ข้อยกเว้นที่เกิดขึ้นสามารถเป็นอะไรก็ได้ในแนวคิดของวิธีการโอเวอร์โหลด | ในการแทนที่เมธอด ข้อยกเว้นที่ไม่ได้ตรวจสอบที่ส่งออกมาอาจเป็นอะไรก็ได้ สำหรับการตรวจสอบข้อยกเว้น วิธีการแทนที่ไม่ควรส่งข้อยกเว้นที่ใหม่หรือกว้างกว่าที่ประกาศโดยวิธีการแทนที่ |
18 | คอมไพเลอร์จะดูแลวิธีการแก้ปัญหาตามประเภทการอ้างอิงเสมอ | JVM ดูแลวิธีการแก้ไขตามวัตถุรันไทม์ |
เรียนรู้ หลักสูตรซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
อะไรต่อไป?
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์ฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ
ความแตกต่างระหว่างรันไทม์คืออะไร?
ความแตกต่างระหว่างรันไทม์เป็นพหุสัณฐานชนิดหนึ่งที่เกี่ยวข้องกับการพิมพ์แบบไดนามิก ซึ่งหมายความว่าสามารถจัดการวัตถุได้เหมือนกับว่าเป็นวัตถุประเภทเดียว สิ่งนี้คล้ายกับความหลากหลายคงที่ซึ่งวัตถุถูกจัดการราวกับว่าพวกมันมีประเภทเดียวโดยไม่คำนึงถึงประเภทพื้นฐาน เป็นหนึ่งในห้าหลักการออกแบบซอฟต์แวร์ที่สำคัญ มันถูกใช้กับการเขียนโปรแกรมเชิงวัตถุ หมายความว่าตัวแปรสามารถอ้างถึงอ็อบเจ็กต์ต่างๆ ขึ้นอยู่กับเงื่อนไขรันไทม์ ตัวอย่างเช่น ตัวแปรอาจถูกใช้เพื่ออ้างถึงอ็อบเจกต์ Dog เมื่อมีการประกาศตัวแปร แต่ในระหว่างการดำเนินการของโปรแกรม ตัวแปรอาจอ้างถึงอ็อบเจกต์ Cat เป็นการแปลงประเภทอัตโนมัติ ตัวอย่างเช่น หากคุณมีตัวแปรจำนวนเต็ม i และคุณกำหนดค่าสตริงให้กับตัวแปรนั้น ตัวแปรนั้นจะกลายเป็นตัวแปรสตริง
การเอาชนะต่างจากการโอเวอร์โหลดอย่างไร?
เราสามารถแทนที่วิธีการโอเวอร์โหลดได้หรือไม่?
วิธีการโอเวอร์โหลดจะเหมือนกับวิธีปกติ (ในแง่ของจำนวนและประเภทของพารามิเตอร์) แต่ด้วยความแตกต่างที่วิธีการโอเวอร์โหลดนั้นเขียนในลักษณะที่สามารถรับพารามิเตอร์ประเภทที่แตกต่างจากวิธีปกติได้ คุณสามารถแทนที่วิธีการโอเวอร์โหลดได้ในลักษณะเดียวกับที่คุณแทนที่วิธีการปกติ