Hướng dẫn is overriding and overloading possible in python? - ghi đè và quá tải có thể xảy ra trong python không?

Trong bài viết này, chúng tôi sẽ thảo luận về các cách khác nhau trong đó quá tải phương thức và quá trình ghi đè phương pháp khác nhau. Nhưng trước tiên chúng ta hãy đi sâu vào các nguyên tắc cơ bản của cả hai trước khi chúng ta thảo luận về sự khác biệt chính giữa quá tải phương thức và ghi đè phương thức.

Phương pháp quá tải trong Python là gì?

Nó là một hình thức đa hình thời gian biên dịch. Trong trường hợp quá tải phương thức, nhiều hơn một phương thức thuộc về một lớp duy nhất có thể chia sẻ một tên phương thức tương tự trong khi có các chữ ký khác nhau. Người ta có thể sử dụng quá tải phương pháp để thêm nhiều hơn vào hành vi của các phương pháp liên quan. Một người dùng đã giành được nhiều hơn một lớp để thực hiện nó.

Lưu ý - Python không cung cấp bất kỳ hỗ trợ nào cho quá tải phương thức. Người dùng có thể quá tải tất cả các phương thức, nhưng chúng sẽ chỉ có khả năng sử dụng phương thức được xác định mới nhất. – Python does not provide any support for method overloading. A user may overload all the methods, but they will be capable of using only the latest defined method.

Phương pháp ghi đè trong Python là gì?

Nó là một loại đa hình thời gian chạy. Trong trường hợp ghi đè phương thức, lớp con cung cấp một triển khai cụ thể của bất kỳ phương thức nào [mà lớp cha đã cung cấp]. Phương thức ghi đè hỗ trợ người dùng thay đổi hành vi của các phương thức đã có. Một nhu cầu ít nhất hai lớp để thực hiện nó. Kế thừa cũng là điều kiện tiên quyết trong quan trọng phương pháp. Đó là bởi vì nó xảy ra giữa cả hai phương pháp- siêu lớp [lớp cha] và lớp con.

Sự khác biệt giữa quá tải phương thức và ghi đè phương thức trong Python

Thông số Phương pháp quá tải trong Java Phương pháp ghi đè trong Java
Sự định nghĩaTrong quá trình quá tải phương thức, tất cả các hàm hoặc phương thức phải chứa cùng tên với chữ ký khác nhau.Trong quá trình ghi đè phương thức, tất cả các hàm hoặc phương thức phải sở hữu cùng một tên cùng với các chữ ký tương tự.
Loại đa hìnhNó đến dưới tính đa hình thời gian biên dịch.Nó đến dưới tính đa hình thời gian chạy.
Di sảnNgười ta có thể hoặc không yêu cầu thừa kế trong trường hợp quá tải phương thức.Kế thừa là điều kiện tiên quyết trong trường hợp vượt trội về phương pháp.
Màn biểu diễnNgười ta có thể thực hiện quá tải phương thức giữa các phương thức nằm trong một lớp.Người ta có thể thực hiện phương thức ghi đè giữa cả lớp phương thức- lớp con và lớp cha [hoặc siêu lớp].
Sử dụng và thực hiệnChúng tôi sử dụng quá tải phương thức để thêm nhiều hơn vào hành vi của tất cả các phương pháp.Chúng tôi sử dụng phương thức ghi đè để thay đổi hành vi của các phương thức đã tồn tại.
Số lượng lớp họcMột người dùng đã giành được nhiều hơn một lớp để thực hiện quá tải phương thức.Người dùng sẽ luôn yêu cầu ít nhất hai lớp để thực hiện ghi đè phương thức. Nó luôn hoạt động với nhiều hơn một lớp.

Tiếp tục học và theo dõi để có được các bản cập nhật mới nhất về & NBSP; GATE cùng với Tiêu chí đủ điều kiện GATE, GATE 2023, Gate Admit Card, & NBSP; Mẫu đơn đăng ký GATE, Cổng giáo trình, & NBSP; .

Cũng khám phá,

  • Sự khác biệt giữa == và là người vận hành trong Python
  • Sự khác biệt giữa có thể lặp lại và người lặp trong Python
  • Sự khác biệt giữa danh sách, tuple, bộ và từ điển trong Python
  • Sự khác biệt giữa danh sách và từ điển trong Python

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.

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:

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:

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:

Ở đâ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 đè

Trong phương thức ghi đè, chúng ta sẽ có nhiều phương thức và lần này số lượng đối số cũng sẽ giống nhau.

Bây giờ bạn phải tự hỏi làm thế nào các phương pháp này khác nhau nếu tên và chữ ký của chúng giống nhau. Vì vậy, câu trả lời là chúng khác nhau về vị trí. Phương pháp sẽ được đặt trong các lớp khác nhau.

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:

Bây giờ, hãy để kết nối cả hai lớp bằng cách sử dụng & nbsp; kế thừa.Inheritance.

Trong kế thừa, như tên cho thấy, một lớp kế thừa các thuộc tính của lớp khác. Hãy để hiểu về sự kế thừa với sự trợ giúp của một ví dụ trong thế giới thực:

Son thừa hưởng tất cả các tính năng từ cha mình nhưng cũng có những đặc điểm độc đáo của mình. Ở đây, người cha là lớp cha mẹ [còn được gọi là lớp cơ sở, siêu lớp, v.v.], và con trai là lớp con [còn được gọi là lớp dẫn xuất].

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:

Bạn có thể thấy rằng đối tượng của lớp con trai có thể truy cập các phương pháp của lớp Cha, cùng với việc truy cập các phương pháp của riêng nó.

Bây giờ vì chúng ta biết cách thức kế thừa hoạt động, hãy để Lôi xem những gì xảy ra khi chúng ta thực hiện phương thức ghi đè. method overriding.

class Class1:                          
    def display[self]:
        print["Hello from Class1"]

class Class2[Class1]:
    def display[self]:
        print["Hello from Class2"]

c2 = Class2[]
c2.display[]

Output:

Ở đây, Class2 kế thừa Class1. Do đó, các đối tượng của Class2 sẽ có thể truy cập các phương thức của Class1. Nhưng vì tên phương thức giống nhau trong cả hai lớp, phương thức trong lớp con sẽ ghi đè phương thức trong lớp cha.

Vì vậy, nếu bạn muốn truy cập các phương thức được ghi đè trong lớp con, bạn cần sử dụng phương thức Super [].

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:

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!

Là quá tải có thể có trong Python?

Giống như các ngôn ngữ khác [ví dụ: quá tải phương thức trong C ++] làm, Python không hỗ trợ quá tải phương thức theo mặc định. Nhưng có nhiều cách khác nhau để đạt được quá tải phương pháp trong Python. Vấn đề với quá tải phương pháp trong Python là chúng ta có thể quá tải các phương thức nhưng chỉ có thể sử dụng phương thức được xác định mới nhất.python does not support method overloading by default. But there are different ways to achieve method overloading in Python. The problem with method overloading in Python is that we may overload the methods but can only use the latest defined method.

Python có cho phép ghi đè không?

Việc ghi đè một phương thức trong cùng một lớp không được phép.Vì vậy, bạn cần phải làm điều đó trong lớp con bằng cách thực hiện khái niệm kế thừa.Nếu bạn muốn ghi đè phương thức lớp cha, hãy tạo một hàm trong đứa trẻ có cùng tên và số lượng tham số.Đây được gọi là chức năng ghi đè trong Python.. So, you need to do that in the child class by implementing the Inheritance concept. If you want to override the Parent Class method, create a function in the Child with the same name and number of parameters. This is called function overriding in Python.

Có thể có quá tải phương thức và ghi đè phương thức?

Phương pháp riêng và cuối cùng có thể bị quá tải.Các phương thức riêng và cuối cùng không thể bị ghi đè.Danh sách đối số nên khác nhau trong khi thực hiện quá tải phương thức.Danh sách đối số nên giống nhau trong quá trình ghi đè phương thức.. Private and final methods can't be overridden. Argument list should be different while doing method overloading. Argument list should be same in method overriding.

Tại sao Python không quá tải phương thức?

Nhưng Python không hỗ trợ quá tải chức năng.Một lỗi bị ném nếu chúng ta thực hiện mã quá tải chức năng theo cách chúng ta làm trong các ngôn ngữ khác.Lý do là Python không có kiểu dữ liệu cho các tham số phương thức.Python does not have a data type for method parameters.

Chủ Đề