ความแตกต่างระหว่างการโอเวอร์โหลดและการเอาชนะ | โอเวอร์โหลด 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 และคุณกำหนดค่าสตริงให้กับตัวแปรนั้น ตัวแปรนั้นจะกลายเป็นตัวแปรสตริง

การเอาชนะต่างจากการโอเวอร์โหลดอย่างไร?

เราสามารถแทนที่วิธีการโอเวอร์โหลดได้หรือไม่?

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