Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Quá tải phương thức và ghi đè phương thức là hai thuật ngữ quan trọng trong lập trình hướng đối tượng. Bạn có thể thấy hai thuật ngữ này khó hiểu, nhưng nó đã thắng được nữa. Trong bài viết này, hãy để hiểu về sự khác biệt giữa quá tải phương thức và ghi đè phương thức.

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Sự khác biệt giữa quá tải phương thức và ghi đè phương thức là gì? Quá tải phương thức cho phép nhiều phương thức trong cùng một lớp có cùng tên nhưng các tham số khác nhau. Ghi đè phương thức cho phép lớp cha và lớp con có các phương thức có cùng tên và cùng một tham số. Phương thức lớp con sẽ ghi đè phương thức lớp cha.Method overloading allows multiple methods in the same class to have the same name but different parameters. Method overriding allows a parent class and a child class to have methods with the same name and same parameters. The child class method will override the parent class method.

Dưới đây là một bảng chỉ ra sự khác biệt giữa quá tải phương thức và ghi đè phương thức.

Phương pháp quá tảiPhương thức ghi đè
Phương thức cùng tên nhưng số lượng đối số khác nhauPhương thức có cùng tên và cùng số lượng đối số
Kế thừa là tùy chọnThừa kế cần thiết
Diễn ra trong các phương pháp trong một lớp họcPhương pháp cư trú trong các lớp khác nhau
Có thể được thực hiện trong một lớp họcÍt nhất 2 lớp được yêu cầu
Liên kết các phương pháp quá tải được thực hiện tại thời gian biên dịch; do đó nó là một phần của tính đa hình thời gian biên dịchLiên kết các phương thức ghi đè được thực hiện tại thời gian chạy; do đó nó là một phần của tính đa hình thời gian chạy
Phương pháp tĩnh có thể bị quá tảiPhương pháp tĩnh không thể bị ghi đè
Tăng khả năng tái sử dụng mãĐược sử dụng trong việc thực hiện các kịch bản cụ thể
Liên quan đến đa hìnhLiên quan đến thừa kế

Bây giờ, hãy để đi sâu vào cả quá tải và ghi đè và hiểu rõ các khái niệm với một số ví dụ đơn giản.

Để hiểu quá tải phương pháp và ghi đè, bạn phải biết khái niệm đa hình. Poly & nbsp; có nghĩa là & nbsp; nhiều. Trong các thuật ngữ lập trình, điều đó có nghĩa là có thể có nhiều chức năng có cùng tên nhưng các hình thức, đối số hoặc hoạt động khác nhau.polymorphism. Poly means many. Morphism means forms. So, polymorphism means “many forms”. In programming terms, it means that there can be many functions with the same name but different forms, arguments, or operations.

Một ví dụ về tính đa hình trong Python:

print(max(10,20))
print(max([100,20,90,40,50,70]))
print(max('A','S','Z','D','V'))
print(max(10.51,2.20,32.54,87.32,90.12,15.63,34.65))

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Chúng tôi sử dụng cùng một phương thức mỗi lần, tức là, tối đa (), thực hiện cùng một hàm mỗi lần, tức là, để tìm giá trị tối đa. Nhưng số lượng và các loại đối số là khác nhau mỗi lần.

  • Chúng tôi đã sử dụng Max () với các giá trị và danh sách riêng lẻ.
  • Chúng tôi đã sử dụng Max () với một số lượng đối số khác nhau.
  • Chúng tôi đã sử dụng Max () với các loại dữ liệu số nguyên, ký tự và float.

Max () là một ví dụ trong đó phương thức có cùng tên nhưng các triển khai khác nhau.

Bây giờ bạn đã biết tính đa hình là gì, khái niệm quá tải phương pháp là dễ hiểu.

Như tên cho thấy, chúng tôi đang quá tải các phương thức, có nghĩa là & nbsp; sẽ có nhiều phương thức có cùng tên trong một lớp, nhưng có một số lượng đối số khác nhau.there would be many methods with the same name within a class, but having a different number of arguments.

class OverloadingExample:
   def add(self,a,b):
       print(a+b)
   def add(self,a,b,c):
       print(a+b+c)
       
a=OverloadingExample()
a.add(5,10)
a.add(5,10,20)

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Lưu ý: Python không hỗ trợ quá tải phương thức, điều này là do Python luôn chọn phương pháp được xác định mới nhất. Chúng ta vẫn có thể quá tải các phương pháp trong Python nhưng nó sẽ không có ích gì. Tuy nhiên, bạn có thể thực hiện quá tải phương thức theo cách trên trong Java, C ++, v.v. Python does not support method overloading, this is because python always picks up the latest defined method. We can still overload methods in python but it would be of no use. However, you can implement method overloading in the above way in Java, C++, etc.

An & nbsp; thay thế & nbsp; để thực hiện & nbsp; quá tải phương thức & nbsp; trong python sẽ theo cách này:

class OverloadingExample:
    def add(self, x = None, y = None):
        if x != None and y != None:
            return x + y
        elif x != None:
            return x
        else:
            return 0

obj = OverloadingExample()

print("Value:", obj.add())
print("Value:", obj.add(4))
print("Value:", obj.add(10,20))

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Ở đây, chúng tôi không đề cập đến định nghĩa chức năng nhiều lần. Thay vào đó, chúng tôi thao tác các đối số bằng cách sử dụng cùng một phương thức nhiều lần.

Phương thức ghi đè

Phương thức cùng tên nhưng số lượng đối số khác nhau

Phương thức có cùng tên và cùng số lượng đối số

class Class1:                          
    def display(self):
        print("Hello from Class1")

class Class2:
    def display(self):
        print("Hello from Class2")

c1 = Class1()
c2 = Class2()

c1.display()
c2.display()

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Kế thừa là tùy chọnInheritance.

Thừa kế cần thiết

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Diễn ra trong các phương pháp trong một lớp học

class Father:                          
    def sleep(self):
        print("Sleep")
    def eat(self):
        print("Eat")
    def blackHair(self):
        print("Black Hair")

class Son(Father):
    def cry(self):
        print("Cry")
    def study(self):
        print("Study")

sonObject = Son()
sonObject.sleep()
sonObject.eat()
sonObject.blackHair()
sonObject.cry()
sonObject.study()

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Phương pháp cư trú trong các lớp khác nhau

Có thể được thực hiện trong một lớp học method overriding.

Ít nhất 2 lớp được yêu cầu

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Liên kết các phương pháp quá tải được thực hiện tại thời gian biên dịch; do đó nó là một phần của tính đa hình thời gian biên dịch

Liên kết các phương thức ghi đè được thực hiện tại thời gian chạy; do đó nó là một phần của tính đa hình thời gian chạy

class Class1:                          
    def display(self):
        print("Hello from Class1")

class Class2(Class1):
    def display(self):
        print("Hello from Class2")
        super().display()

c2 = Class2()
c2.display()

Output:

Hướng dẫn what is overloading and overriding in python? - quá tải và ghi đè trong python là gì?

Suy nghĩ cuối cùng

Trong bài viết này, chúng tôi đã thấy các khái niệm cơ bản về quá tải phương pháp và phương thức ghi đè cùng với các chương trình Python ví dụ.

Tôi hy vọng những khái niệm này rõ ràng với bạn. Bây giờ bạn có thể thực hiện các khái niệm này trong khi bạn thực hiện lập trình hướng đối tượng.

Kiểm tra bài viết này nếu bạn muốn hiểu sự khác biệt giữa quá tải phương thức và quá tải của người vận hành.

Mã hóa hạnh phúc!

Quá tải trong Python là gì?

Quá tải là khả năng của một chức năng hoặc một toán tử hoạt động theo các cách khác nhau dựa trên các tham số được truyền đến chức năng hoặc các toán tử mà toán tử hoạt động. Một số lợi thế của việc sử dụng quá tải là: quá tải một phương pháp thúc đẩy khả năng tái sử dụng.the ability of a function or an operator to behave in different ways based on the parameters that are passed to the function, or the operands that the operator acts on. Some of the advantages of using overload are: Overloading a method fosters reusability.

Quá tải và ghi đè với ví dụ là gì?

Ghi đè xảy ra khi chữ ký phương thức giống nhau trong siêu lớp và lớp con.Quá tải xảy ra khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng các tham số khác nhau.

Quá tải hoặc ghi đè là gì?

Quá tải xảy ra khi hai hoặc nhiều phương thức trong một lớp có cùng tên phương thức nhưng các tham số khác nhau. Xuất hiện xảy ra khi hai phương thức có cùng tên và tham số phương thức.Một trong những phương pháp nằm trong lớp cha mẹ và phương pháp khác nằm trong lớp con. Overriding occurs when two methods have the same method name and parameters. One of the methods is in the parent class, and the other is in the child class.

Điều gì đang quá tải trong Python với ví dụ?

Ví dụ: toán tử + sẽ thực hiện bổ sung số học trên hai số, hợp nhất hai danh sách hoặc nối hai chuỗi.Tính năng này trong Python cho phép cùng một toán tử có ý nghĩa khác nhau theo ngữ cảnh được gọi là quá tải toán tử.allows the same operator to have different meaning according to the context is called operator overloading.