Kế thừa là một trong những khái niệm chính của lập trình định hướng đối tượng [OOP]. Các đối tượng được tạo bằng các lớp, nhưng đó không phải là tất cả.
Một lớp có thể kế thừa các phương thức và biến từ một lớp khác. Nguyên tắc này giúp chúng tôi tránh mã trùng lặp. Đổi lại, một đối tượng được tạo có các phương thức và biến từ cả hai lớp.
Khóa học liên quan: Các khóa học & Bài tập lập trình Python Python Programming Courses & Exercises
Giới thiệu thừa kế
Kế thừa Một khái niệm về lập trình định hướng đối tượng và yêu cầu các lớp.
Kế thừa là khả năng từ một lớp để kế thừa từ lớp cha.
Di truyền ở mức tối thiểu yêu cầu hai lớp
Lớp cha là lớp đang được kế thừa từ is the class that is being inherited from
Lớp học hạng A được thừa hưởng từ lớp phụ huynh a class that inherits from the parent class
Trái ngược với sự kế thừa trong thế giới thực, trong lập trình hướng đối tượng
Một lớp con thừa hưởng các phương thức và biến từ lớp cha.
Cú pháp
Cú pháp để thừa kế trong Python là:
class ChildClassName[ParentClassName]:
pass
Bất kỳ lớp học nào cũng có thể là cha mẹ và bất kỳ lớp nào cũng có thể là một đứa trẻ.
Thay vì câu lệnh
0, bạn có thể đặt các biến và biến số lớp con ở đó.
class Student[Person]:
pass
Các biến và phương pháp lớp phụ huynh sẽ được thêm vào lớp trẻ.
Ví dụ kế thừa
Bất kỳ lớp nào cũng có thể là một lớp cha, và như vậy bạn chỉ cần tạo một lớp.
Lớp có thể có các biến, phương thức hoặc cả hai.
Lớp cha mẹ chúng tôi tạo là:
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Sau đó, bạn có thể tạo một lớp trẻ em.
Lớp con sẽ sao chép các biến và phương thức của cha mẹ.
class Student[Person]:
pass
Sau đó, nếu bạn tạo một đối tượng bằng học sinh lớp, nó sẽ có các biến và phương pháp của cha mẹ.
>>> obj = Student[]
>>> obj.firstname = "Alice"
>>> obj.lastname = "Allison"
>>> obj.introduce[]
My name is Alice Allison
>>>
Lớp trẻ có thể có các phương pháp và biến riêng của nó.
>>>
>>> class Student[Person]:
... school = "Harvard"
... study = "Computer Science"
... year = 1
... def education[self]:
... print["I am studying " + self.study + " at " + self.school]
...
Sau đó, đối tượng của bạn có thể sử dụng cả hai phương thức và biến từ lớp con và cha mẹ:
>>> obj = Student[]
>>> obj.firstname = "Billy"
>>> obj.lastname = "Watson"
>>> obj.introduce[]
My name is Billy Watson
>>> obj.education[]
I am studying Computer Science at Harvard
>>>
Nếu bạn là người mới bắt đầu Python, thì tôi đánh giá cao cuốn sách này.
Ví dụ trừu tượng
Trước khi bắt đầu với kế thừa, hãy tạo một lớp. Chúng tôi sẽ yêu cầu hai lớp, một lớp cha và một lớp kế thừa.
Bắt đầu bằng cách xác định lớp A có phương pháp A.
class A:
def A[self]:
print['A']
Sau đó, chúng tôi tạo lớp B và để nó kế thừa từ lớp A.
class B[A]:
def B[self]:
print['B']
Nếu bạn tạo một đối tượng từ lớp B, nó có cả hai phương thức được xác định trong lớp A và lớp B.
Trong ví dụ này, chỉ có phương thức cấu trúc, không có phương pháp nào khác. Nhưng trong trường hợp A có một số phương pháp, chúng sẽ được sao chép vào thành phố B.
Mã kế thừa đầy đủ:
class A:
def A[self]:
print['A']
def GrandpaMethod[self]:
print['Made in class A']
class B[A]:
def B[self]:
print['B']
o = B[]
o.A[]
o.B[]
o.GrandpaMethod[]
Ví dụ thế giới thực
Ví dụ trên là rất trừu tượng, để làm cho nó rõ ràng hơn, chúng ta tạo ra một ví dụ cụ thể.
Tạo người dùng lớp, có một số biến và phương thức.
class User:
name = ""
def getName[self]:
return self.name
Biến điều đó thành một lớp siêu [= lớp cha], bằng cách xác định học sinh lớp con [= lớp con].super class [= parent class], by defining the sub class [= child class] student.
0
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Sinh viên lớp hiện được thừa hưởng từ người dùng lớp, có nghĩa là nó sẽ có tên biến và phương thức
1.
class Student[Person]:
pass
Điều đó có nghĩa là nếu bạn tạo một đối tượng mới, bạn có thể truy cập phương thức
1
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Bạn có thể thêm các phương thức và biến mới vào lớp học sinh của mình, cũng sẽ có sẵn:
2
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Vì vậy, bạn có thể truy cập cả các phương thức và biến từ lớp con và siêu lớp.sub class and the super class.
3
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Nếu bạn là người mới bắt đầu Python, thì tôi đánh giá cao cuốn sách này.
Ví dụ trừu tượnginit function
Trước khi bắt đầu với kế thừa, hãy tạo một lớp. Chúng tôi sẽ yêu cầu hai lớp, một lớp cha và một lớp kế thừa.
Bắt đầu bằng cách xác định lớp A có phương pháp A.
Sau đó, chúng tôi tạo lớp B và để nó kế thừa từ lớp A.
Nếu bạn tạo một đối tượng từ lớp B, nó có cả hai phương thức được xác định trong lớp A và lớp B.
Trong ví dụ này, chỉ có phương thức cấu trúc, không có phương pháp nào khác. Nhưng trong trường hợp A có một số phương pháp, chúng sẽ được sao chép vào thành phố B.
4
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Mã kế thừa đầy đủ:
5
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Ví dụ thế giới thực
6
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Ví dụ trên là rất trừu tượng, để làm cho nó rõ ràng hơn, chúng ta tạo ra một ví dụ cụ thể.
7
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Tạo người dùng lớp, có một số biến và phương thức.
Biến điều đó thành một lớp siêu [= lớp cha], bằng cách xác định học sinh lớp con [= lớp con].super class.
Sinh viên lớp hiện được thừa hưởng từ người dùng lớp, có nghĩa là nó sẽ có tên biến và phương thức
1.super class is a parent class [see terminology below].
class Student[Person]:
pass
Điều đó có nghĩa là nếu bạn tạo một đối tượng mới, bạn có thể truy cập phương thức
Bạn có thể thêm các phương thức và biến mới vào lớp học sinh của mình, cũng sẽ có sẵn:
Vì vậy, bạn có thể truy cập cả các phương thức và biến từ lớp con và siêu lớp.
Hàm init
Lớp trẻ ghi đè lên hàm tạo của cha mẹ [
class Student[Person]:
pass
2].
class Student[Person]:
pass
Hãy nhớ lại rằng một hàm tạo là phương pháp đầu tiên được gọi là tạo đối tượng và luôn được đặt tên là
2.
class Student[Person]:
pass
Vì vậy, các phương thức Higlighted là các hàm tạo:
9
class Person:
firstname = ''
lastname = ''
def introduce[self]:
print["My name is " + self.firstname + " " + self.lastname]
Trở lại để thừa kế với các nhà xây dựng.
Nếu bạn có hai lớp với hai hàm tạo:
Sau đó, hàm tạo con sẽ được sử dụng, vì vậy nếu bạn thử hàm tạo của cha mẹ, nó đã ném lỗi này:
Nhưng sử dụng hàm tạo con hoạt động tốt:super class or base class.
Nếu không có hàm tạo nào được xác định trong lớp trẻ, hàm tạo lớp phụ huynh được sử dụng.sub class.
Nếu bạn là người mới bắt đầu Python, thì tôi đánh giá cao cuốn sách này.
Ví dụ trừu tượng