Ghi đè trong Python là gì?

Ghi đè phương thức là một tính năng của lập trình hướng đối tượng cho phép bạn thay đổi hành vi của các phương thức kế thừa theo nhu cầu cụ thể của chúng tôi. Ở đây, phương thức trong lớp dẫn xuất có cùng tên và cùng số đối số với lớp cơ sở

Phương thức của lớp cơ sở được gọi là phương thức ghi đè và phương thức của lớp dẫn xuất được gọi là phương thức ghi đè

#Python program to implement method overriding
class Animal:
   def sound(self):
      print('Animal makes sound.')

class Dog(Animal):
   def sound(self):
      print('Dog barks.')

d = Dog()
d.sound()

Đầu ra của chương trình trên

Dog barks.

Trong đoạn mã trên, bạn có thể thấy rằng lớp Dog là một lớp con của lớp Animal. Lớp Dog đã ghi đè phương thức

Dog barks.
1 của lớp Animal. Khi chúng ta gọi phương thức
Dog barks.
1 sử dụng đối tượng lớp Dog thì "Dog sủa" được in ra thay vì "Động vật tạo ra âm thanh"

Ghi đè phương thức là một khái niệm của lập trình hướng đối tượng, cho phép chúng ta thay đổi cách thực hiện của một hàm trong lớp con đã được định nghĩa trong lớp cha. Đó là khả năng của một lớp con thay đổi việc triển khai bất kỳ phương thức nào đã được cung cấp bởi một trong các lớp cha (tổ tiên) của nó

Các điều kiện sau phải được đáp ứng để ghi đè một chức năng

  1. Kế thừa nên có. Chức năng ghi đè không thể được thực hiện trong một lớp. Chúng ta cần lấy một lớp con từ một lớp cha
  2. Hàm được định nghĩa lại trong lớp con phải có cùng chữ ký như trong lớp cha i. e. cùng một số tham số

Như chúng ta đã tìm hiểu về khái niệm Kế thừa, chúng ta biết rằng khi một lớp con kế thừa một lớp cha, nó cũng có quyền truy cập vào các biến và phương thức publicprotected(access modifiers in python), ví dụ:

# parent class
class Parent:
    # some random function
    def anything(self):
        print('Function defined in parent class!')
        
# child class
class Child(Parent):
    # empty class definition
    pass


obj2 = Child()
obj2.anything()

Hàm được định nghĩa trong lớp cha

Trong khi lớp con có thể truy cập các phương thức của lớp cha, nó cũng có thể cung cấp một triển khai mới cho các phương thức của lớp cha, được gọi là ghi đè phương thức


Ví dụ ghi đè phương thức Python

Hãy lấy một ví dụ rất thú vị mà chúng ta cũng đã có trong hướng dẫn thừa kế. Có một lớp cha tên là Animal

class Animal:
    # properties
	multicellular = True
	# Eukaryotic means Cells with Nucleus
	eukaryotic = True
	
	# function breathe
	def breathe(self):
	    print("I breathe oxygen.")
    
    # function feed
	def feed(self):
	    print("I eat food.")

Hãy tạo một lớp con Herbivorous sẽ mở rộng lớp Animal

class Herbivorous(Animal):
    
    # function feed
	def feed(self):
	    print("I eat only plants. I am vegetarian.")

Trong lớp con Herbivorous, chúng ta đã ghi đè phương thức

class Animal:
    # properties
	multicellular = True
	# Eukaryotic means Cells with Nucleus
	eukaryotic = True
	
	# function breathe
	def breathe(self):
	    print("I breathe oxygen.")
    
    # function feed
	def feed(self):
	    print("I eat food.")
0

Vì vậy, bây giờ khi chúng ta tạo một đối tượng của lớp Herbivorous và gọi phương thức

class Animal:
    # properties
	multicellular = True
	# Eukaryotic means Cells with Nucleus
	eukaryotic = True
	
	# function breathe
	def breathe(self):
	    print("I breathe oxygen.")
    
    # function feed
	def feed(self):
	    print("I eat food.")
0, phiên bản bị ghi đè sẽ được thực thi

Ghi đè phương thức trong Python là khi bạn có hai phương thức có cùng tên, mỗi phương thức thực hiện các tác vụ khác nhau. Ghi đè phương thức là một khả năng của bất kỳ ngôn ngữ lập trình hướng đối tượng nào cho phép một lớp con hoặc lớp con cung cấp một triển khai cụ thể của một phương thức đã được cung cấp bởi một trong các lớp cha hoặc lớp cha của nó. Khi một phương thức trong lớp con có cùng tên, cùng tham số hoặc chữ ký và cùng kiểu trả về (hoặc kiểu con) như một phương thức trong siêu lớp của nó, thì phương thức trong lớp con được cho là sẽ ghi đè phương thức trong siêu lớp.


Mã nguồn

# Function Overriding
class Employee:
    def WorkingHrs(self):
        self.hrs = 50
 
    def printHrs(self):
        print("Total Working Hrs : ", self.hrs)
 
 
class Trainee(Employee):
    def WorkingHrs(self):
        self.hrs = 60
 
    def resetHrs(self):
        super().WorkingHrs()
 
 
employee = Employee()
employee.WorkingHrs()
employee.printHrs()
 
trainee=Trainee()
trainee.WorkingHrs()
trainee.printHrs()
# Reset Trainee Hrs
trainee.resetHrs()
trainee.printHrs()
Để tải xuống tệp thô Bấm vào đây

đầu ra

Total Working Hrs :  50
Total Working Hrs :  60
Total Working Hrs :  50

Danh sách chương trình


Chương trình mẫu


Kết nối cơ sở dữ liệu Python


bình trăn


Hướng dẫn Python Tkinter


Ví dụ ghi đè trong Python là gì?

Ghi đè phương thức trong Python là khi bạn có hai phương thức có cùng tên, mỗi phương thức thực hiện các tác vụ khác nhau . Đây là một tính năng quan trọng của tính kế thừa trong Python. Trong ghi đè phương thức, lớp con có thể thay đổi các chức năng được định nghĩa bởi các lớp tổ tiên của nó.

Ghi đè và quá tải trong Python là gì?

Quá tải phương thức là xác định hai hoặc nhiều phương thức có cùng tên nhưng khác tham số. Python không hỗ trợ nạp chồng phương thức. Ghi đè phương thức là định nghĩa lại một phương thức của lớp cha trong lớp dẫn xuất . Ghi đè yêu cầu kế thừa để thực hiện.

Ghi đè bằng ví dụ là gì?

Ví dụ ghi đè phương thức . Một lớp con Boy và một lớp cha Human. Lớp Boy mở rộng lớp Human. Cả hai lớp đều có một phương thức chung là void eat(). Lớp Boy đang triển khai phương thức eat() của riêng mình hay nói cách khác, nó đang ghi đè phương thức eat() .

ghi đè giải thích là gì?

Về mặt kỹ thuật, ghi đè là một chức năng yêu cầu một lớp con hoặc lớp con cung cấp nhiều cách triển khai phương thức đã được cung cấp bởi một trong các lớp cha hoặc lớp cha của nó, trong bất kỳ ngôn ngữ lập trình hướng đối tượng nào.