ความแตกต่างที่สำคัญ – การโอเวอร์โหลดและการเอาชนะใน Java
การเขียนโปรแกรมเชิงวัตถุ (OOP) เป็นกระบวนทัศน์สำคัญในการพัฒนาซอฟต์แวร์ เป็นวิธีการออกแบบโปรแกรมโดยใช้คลาสและอ็อบเจ็กต์ ชั้นเรียนเป็นพิมพ์เขียว มันอธิบายสิ่งที่ควรมีในวัตถุ กำหนดคุณสมบัติหรือแอตทริบิวต์และวิธีการที่วัตถุควรประกอบด้วย ดังนั้น วัตถุจึงเป็นตัวอย่างของคลาส วัตถุเหล่านี้สื่อสารกับวัตถุอื่น แนวคิดหลักประการหนึ่งของ OOP คือ Polymorphism เป็นความสามารถสำหรับวัตถุที่จะประพฤติตัวได้หลายวิธี Polymorphism แบ่งออกเป็น 2 ส่วนคือ Overloading และ Overrideบทความนี้กล่าวถึงความแตกต่างระหว่างสองสิ่งนี้ใน Java ความแตกต่างที่สำคัญระหว่างการโอเวอร์โหลดและการแทนที่ใน Java คือการโอเวอร์โหลดคือความสามารถในการสร้างเมธอดหลายเมธอดที่มีชื่อเดียวกันพร้อมการใช้งานที่แตกต่างกัน และการแทนที่คือการจัดเตรียมการใช้งานสำหรับเมธอดซับคลาสที่มีอยู่แล้วในซูเปอร์คลาส
Java โอเวอร์โหลดคืออะไร
การโอเวอร์โหลดคือความสามารถในการสร้างเมธอดที่มีชื่อเดียวกันได้หลายวิธีพร้อมการใช้งานที่แตกต่างกัน อ้างอิงโค้ด Java ด้านล่าง
รูปที่ 01: โปรแกรม Java ที่อธิบายการโอเวอร์โหลดด้วยจำนวนอาร์กิวเมนต์ต่างกัน
ตามโปรแกรมข้างต้น คลาส A มีสองวิธีที่มีชื่อเดียวกัน วิธีผลรวมแรกมีสองพารามิเตอร์ วิธีผลรวมที่สองมีสามพารามิเตอร์ เมื่อสร้างวัตถุประเภท A และเรียก sum(2, 3) จะเรียกวิธี sum ด้วยพารามิเตอร์สองตัวที่เป็นผลรวม (int a, int b) และส่งคืน 5. เมื่อสร้างวัตถุประเภท A และเรียก sum(2, 3, 4) มันจะเรียกวิธีผลรวมอื่นด้วยสามพารามิเตอร์ซึ่งก็คือผลรวม (int a, int b, int c) และส่งคืน 9.
ชื่อเมธอดเหมือนกันแต่จำนวนพารามิเตอร์ต่างกัน สังเกตได้ว่าวัตถุตัวเดียวกันมีพฤติกรรมต่างกัน แนวคิดนี้เรียกว่าโอเวอร์โหลด เรียกอีกอย่างว่า Static Binding หรือ Compiles Time Polymorphism
นอกจากนี้ยังสามารถโอเวอร์โหลดด้วยข้อมูลประเภทต่างๆ อ้างอิงโค้ด Java ด้านล่าง
รูปที่ 02: โปรแกรม Java ซึ่งอธิบายการโอเวอร์โหลดด้วยจำนวนอาร์กิวเมนต์ที่แตกต่างกัน
ตามโปรแกรมข้างต้น คลาส A ประกอบด้วยสองวิธีที่มีชื่อเดียวกัน sum(int a, int b) วิธีการรับค่าจำนวนเต็มสองค่า ผลรวม (double a double b) ได้รับค่าสองเท่าสองค่า เมื่อสร้างวัตถุประเภท A และเรียก sum(2, 3) จะเรียก sum(int a, int b) และคืนค่า 5. เมื่อเรียก sum (3.4, 5.6) จะเรียก sum (double a double) b) และคืนค่า 9.0 ในตัวอย่างนี้ เมธอดมีชื่อเหมือนกัน แต่มีประเภทตัวแปรต่างกัน นี่ก็โอเวอร์โหลดเช่นกัน
การเอาชนะใน Java คืออะไร
ใน Java สามารถสร้างคลาสย่อยด้วยคลาสที่มีอยู่แล้วได้แทนที่จะสร้างคลาสใหม่ตั้งแต่ต้น คุณสามารถใช้คุณสมบัติและเมธอดของคลาสที่มีอยู่แล้วได้ คลาสที่มีอยู่คือซูเปอร์คลาส และคลาสที่ได้รับคือคลาสย่อย เมื่อคลาสย่อยจัดเตรียมการใช้งานสำหรับเมธอดซึ่งมีอยู่แล้วในซูเปอร์คลาส จะเรียกว่าการแทนที่ อ้างถึงโปรแกรม Java ด้านล่าง
รูปที่ 03: โปรแกรม Java สำหรับการแทนที่
ตามโปรแกรมด้านบน คลาส A กำลังแสดงเมธอด () คลาส B ขยายจากคลาส A ดังนั้นคุณสมบัติและวิธีการของคลาส A สามารถเข้าถึงได้โดยคลาส Bคลาส B มีเมธอด display() พร้อมการใช้งานเฉพาะ เมื่อสร้างอ็อบเจ็กต์ประเภท A และเรียกใช้เมธอดการแสดงผล ออบเจ็กต์ดังกล่าวจะให้เอาต์พุต B แม้ว่าคลาส A จะมีวิธีการแสดง แต่ก็จะถูกแทนที่ด้วยวิธีการแสดงคลาส B คลาสย่อยกำลังใช้เมธอดที่มีอยู่แล้วในซูเปอร์คลาส
แนวคิดนี้เป็นประเภทของความหลากหลายและเรียกว่าการเอาชนะ เรียกอีกอย่างว่า Late Binding, Dynamic Binding, Runtime Polymorphism
ความคล้ายคลึงกันระหว่างการโอเวอร์โหลดและการเอาชนะใน Java คืออะไร
- ทั้งสองเป็นแบบของ Polymorphism
- ในการโอเวอร์โหลดและการแทนที่ เมธอดมีชื่อเหมือนกัน
ความแตกต่างระหว่างการโอเวอร์โหลดและการเอาชนะใน Java คืออะไร
โอเวอร์โหลด vs โอเวอร์ไรด์ใน Java |
|
การโอเวอร์โหลดใน Java คือความสามารถในการสร้างเมธอดหลายเมธอดที่มีชื่อเดียวกันพร้อมการใช้งานที่แตกต่างกัน | การแทนที่ใน Java เป็นการจัดเตรียมการใช้งานเฉพาะในวิธีคลาสย่อยสำหรับวิธีการที่มีอยู่แล้วในซูเปอร์คลาส |
พารามิเตอร์ | |
ในการโอเวอร์โหลด เมธอดมีชื่อเหมือนกันแต่จำนวนพารามิเตอร์ต่างกันหรือพารามิเตอร์ประเภทอื่น | ในการแทนที่ เมธอดมีชื่อและพารามิเตอร์เหมือนกัน |
ธีม | |
เกิดการโอเวอร์โหลดในชั้นเรียน | การเอาชนะเกิดขึ้นในสองคลาสที่มีความสัมพันธ์ในการสืบทอด |
คำพ้องความหมาย | |
การโอเวอร์โหลดเรียกว่าคอมไพล์เวลาพหุสัณฐาน | การแทนที่เรียกว่าความแตกต่างของรันไทม์ |
สรุป – โอเวอร์โหลด vs โอเวอร์ไรด์ใน Java
Polymorphism เป็นแนวคิดหลักในการเขียนโปรแกรมเชิงวัตถุ ให้ความสามารถสำหรับวัตถุในการทำงานได้หลายวิธี นี่อาจเป็นการโอเวอร์โหลดหรือโอเวอร์ไรด์ การโอเวอร์โหลดคือความแตกต่างของเวลาคอมไพล์ และการแทนที่คือความแตกต่างระหว่างรันไทม์ มีประโยชน์ในการพัฒนาแอพพลิเคชั่นซอฟต์แวร์ ความแตกต่างระหว่างการแทนที่และการโอเวอร์โหลดคือ การโอเวอร์โหลดคือความสามารถในการสร้างเมธอดหลายเมธอดที่มีชื่อเดียวกันพร้อมการใช้งานที่แตกต่างกัน และการโอเวอร์ไรด์กำลังจัดเตรียมการใช้งานเฉพาะในเมธอดคลาสย่อยสำหรับเมธอดที่มีอยู่แล้วในซูเปอร์คลาส เป็นไปได้ที่จะใช้งานทั้งการโอเวอร์โหลดและการแทนที่ใน Java
ดาวน์โหลดไฟล์ PDF โอเวอร์โหลด vs โอเวอร์ไรด์ใน Java
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่ความแตกต่างระหว่างการโอเวอร์โหลดและการเอาชนะใน Java