ความแตกต่างระหว่าง Method Overloading และ Overriding คืออะไร?



บทความนี้ครอบคลุมความแตกต่างที่สำคัญระหว่างวิธีการโอเวอร์โหลดและการแทนที่ใน java พร้อมตัวอย่างต่างๆรวมถึงคำหลักขั้นสูงและกฎต่างๆ

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

Method Overloading ใน Java คืออะไร?

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





  • เราไม่สามารถโหลดประเภทการส่งคืนมากเกินไป

  • แม้ว่าเราจะสามารถโอเวอร์โหลดได้ อาร์กิวเมนต์หรือพารามิเตอร์อินพุตจะต้องแตกต่างกัน



  • เราไม่สามารถโอเวอร์โหลดสองวิธีได้หากแตกต่างกันด้วยคีย์เวิร์ดคงที่

  • เช่นเดียวกับวิธีการคงที่อื่น ๆ เมธอด main () ยังสามารถโอเวอร์โหลดได้

method overloading - method overloading และ overriding ใน java-edureka



มาดูโปรแกรมง่ายๆเพื่อทำความเข้าใจว่าวิธีการทำงานมากเกินไปใน python นั้นเป็นอย่างไร

คลาสสาธารณะ Div {public int div (int a, int b) {return (a / b)} public int div (int a, int b, int c) {return ((a + b) / c)} โมฆะแบบคงที่สาธารณะ main (สตริง args []) {Div ob = new Div () ob.div (10, 2) ob.div (10, 2, 3)}}
 เอาท์พุต: 5 4

ในโปรแกรมข้างต้นเรามีสองวิธีที่มีชื่อเดียวกัน แต่พารามิเตอร์ต่างกัน นี่คือวิธีการทำงานของวิธีการโอเวอร์โหลด .

ทำไมวิธีการโอเวอร์โหลด?

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

การโอเวอร์โหลดเมธอด main ():

ตัวดำเนินการแก้ไขขอบเขตใน c ++

ต่อไปนี้เป็นตัวอย่างในการโอเวอร์โหลดเมธอด main () ใน java

คลาสสาธารณะ Edureka {public static void main (String [] args) {System.out.println ('hello') Edureka.main ('edurekan')} public static void main (String arg1) {System.out.println (' ยินดีต้อนรับ '+ arg1) Edureka.main (' welcome ',' to edureka ')} public static void main (String arg1, String arg2) {System.out.println (' hello ', + arg1, + arg2)}}
 เอาท์พุต: สวัสดียินดีต้อนรับ edurekan สวัสดียินดีต้อนรับสู่ edureka

ตัวอย่างการโอเวอร์โหลดวิธี

  • โปรแกรมเพื่อโอเวอร์โหลดวิธีการคงที่ใน java
การทดสอบคลาสสาธารณะ {public static int func (int a) {return 100} public static char func (int a, int b) {return 'edureka'} public static void main (String args []) {System.out.println ( func (1)) System.out.println (func (1,3))}}
 เอาท์พุต: 100 edureka
  • โปรแกรมโอเวอร์โหลดสามวิธีที่มีชื่อเดียวกัน
คลาสสาธารณะเพิ่ม {public int add (int a, int b) {return (a + b)} public int add (int a, int b, int c) {return (a + b + c)} public double add (double a, double b) {return (a + b)} public static void main (String args []) {Add ob = new Add () ob.add (15,25) ob.add (15,25,35) ob .add (11.5, 22.5)}}
 เอาท์พุต: 40 75 34

วิธีการแทนที่ใน Java คืออะไร?

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

หากอ็อบเจ็กต์คลาสลูกเรียกใช้เมธอดเมธอดคลาสลูกจะแทนที่เมธอดคลาสพาเรนต์ มิฉะนั้นถ้าอ็อบเจ็กต์คลาสพาเรนต์เรียกใช้เมธอดเมธอดคลาสพาเรนต์จะถูกเรียกใช้

การลบล้างเมธอดยังช่วยในการนำความหลากหลายของรันไทม์ไปใช้ใน java เรามาดูตัวอย่างง่ายๆเพื่อทำความเข้าใจวิธีการทำงานของ method overriding ใน java

class Parent {void view () {System.out.println ('this is a parent class method)}} class Child ขยาย Parent {void view () {System.out.println (' this is a child class method)}} public static void main (String args []) {Parent ob = new Parent () ob.view () Parent ob1 = new Child () ob1.view ()
 เอาท์พุต: นี่คือเมธอดคลาสย่อย

กฎสำหรับการแทนที่วิธีการ

  • เข้าถึงแก้ไข สามารถอนุญาตให้เข้าถึงได้มากขึ้นสำหรับเมธอดที่ถูกลบล้าง

    pivot และ unfivot ในเซิร์ฟเวอร์ sql
  • ถึง สุดท้าย วิธีการไม่สนับสนุนวิธีการแทนที่

  • ไม่สามารถแทนที่เมธอดแบบคงที่ได้

  • ไม่สามารถลบล้างเมธอดส่วนตัวได้

  • ประเภทการส่งคืนของวิธีการลบล้างต้องเหมือนกัน

  • เราสามารถเรียกเมธอดคลาสแม่ในเมธอดการลบล้างโดยใช้ซูเปอร์คีย์เวิร์ด

  • ถึง ผู้สร้าง ไม่สามารถแทนที่ได้เนื่องจากคลาสลูกและคลาสพาเรนต์ไม่สามารถมีตัวสร้างที่มีชื่อเดียวกันได้

ตัวอย่างการลบล้างวิธี

  • โปรแกรมแสดงการลบล้างโดยใช้คำหลักขั้นสูง
class Parent {void show () {System.out.println ('parent class method')} class Child ขยาย Parent {void show () {super.show () System.out.println ('child class method')} public โมฆะคง main (String args []) {Parent ob = new Child () ob.show ()}}
 เอาท์พุต: เมธอดคลาสเด็กเมธอดคลาสผู้ปกครอง

Overloading vs Overriding: ความแตกต่างระหว่าง Method Overloading และ Method Overriding

ต่อไปนี้คือความแตกต่างที่สำคัญระหว่างวิธีการโอเวอร์โหลดและการแทนที่ใน Java

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

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

ภาษาการเขียนโปรแกรม Java เป็นจุดสูงสุดในการเขียนโปรแกรมเชิงวัตถุและรวมเอาแอปพลิเคชันจำนวนมาก ด้วยความต้องการและความนิยมนักพัฒนา java ที่ต้องการจะต้องมีความเชี่ยวชาญในแนวคิดพื้นฐานของภาษาโปรแกรม ลงทะเบียนกับ Edureka’s เพื่อเริ่มต้นการเรียนรู้ของคุณ

มีคำถามสำหรับเรา? โปรดระบุสิ่งนี้ในส่วนความคิดเห็นของบทความนี้เกี่ยวกับ 'method overloading vs method overriding in java' และเราจะติดต่อกลับโดยเร็วที่สุด