Từ khóa super
được sử dụng để gọi hàm tạo của lớp cha để truy cập các thuộc tính và phương thức của lớp cha
Mẹo. Để hiểu rõ hơn về khái niệm "kế thừa" [lớp cha và lớp con], hãy đọc Hướng dẫn về lớp JavaScript của chúng tôi
Thí dụ
Tạo một lớp có tên "Model" sẽ kế thừa các phương thức từ lớp "Car" bằng cách sử dụng từ khóa extends
Bằng cách gọi phương thức super[]
trong phương thức khởi tạo, chúng ta gọi phương thức khởi tạo của cha mẹ và có quyền truy cập vào các thuộc tính và phương thức của cha mẹ
Kế thừa cho phép chúng ta định nghĩa một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác
Lớp cha là lớp được kế thừa từ đó, còn được gọi là lớp cơ sở
Lớp con là lớp kế thừa từ lớp khác, còn gọi là lớp dẫn xuất
Tạo một lớp cha
Bất kỳ lớp nào cũng có thể là lớp cha, vì vậy cú pháp giống như tạo bất kỳ lớp nào khác
Thí dụ
Tạo một lớp có tên Person
, với các thuộc tính firstname
và lastname
và một phương thức printname
lớp Người.
def __init__[self, fname, lname].
bản thân. firstname = fname
bản thân. họ = tên
def printname[self].
print[self. tên, bản thân. họ]
#Sử dụng lớp Person để tạo một đối tượng, sau đó thực thi phương thức printname
x = Person["John", "Doe"]
x. tên in []
Tạo một lớp con
Để tạo một lớp kế thừa chức năng từ một lớp khác, hãy gửi lớp cha dưới dạng tham số khi tạo lớp con
Thí dụ
Tạo một lớp có tên là Student
, lớp này sẽ kế thừa các thuộc tính và phương thức từ lớp Person
Sinh viên lớp[Người].
vượt qua
Ghi chú. Sử dụng từ khóa pass
khi bạn không muốn thêm bất kỳ thuộc tính hoặc phương thức nào khác vào lớp
Bây giờ lớp Sinh viên có các thuộc tính và phương thức giống như lớp Người
Thí dụ
Sử dụng lớp Student
để tạo một đối tượng, sau đó thực thi phương thức printname
x = Sinh viên["Mike", "Olsen"]
x. tên in []
Thêm chức năng __init__[]
Cho đến giờ chúng ta đã tạo một lớp con kế thừa các thuộc tính và phương thức từ lớp cha của nó.
Chúng tôi muốn thêm hàm extends
2 vào lớp con [thay vì từ khóa pass
]
Ghi chú. Hàm extends
2 được gọi tự động mỗi khi lớp được sử dụng để tạo một đối tượng mới
Thí dụ
Thêm hàm extends
2 vào lớp Student
Sinh viên lớp[Người].
def __init__[self, fname, lname].
#add thuộc tính, v.v.
Khi bạn thêm hàm extends
2, lớp con sẽ không kế thừa hàm extends
2 của lớp cha nữa
Ghi chú. Hàm extends
2 của con ghi đè quyền kế thừa của hàm extends
2 của cha
Để giữ tính kế thừa của hàm extends
2 của cha mẹ, hãy thêm lệnh gọi tới hàm extends
2 của cha mẹ
Thí dụ
Sinh viên lớp[Người].
def __init__[self, fname, lname].
Người. __init__[self, fname, lname]
Bây giờ chúng ta đã thêm thành công hàm __init__[] và giữ nguyên tính kế thừa của lớp cha và chúng ta đã sẵn sàng để thêm chức năng vào hàm extends
2
Sử dụng hàm super[]
Python cũng có một hàm lastname
1 sẽ làm cho lớp con kế thừa tất cả các phương thức và thuộc tính từ lớp cha của nó
Thí dụ
Sinh viên lớp[Người].
def __init__[self, fname, lname].
super[]. __init__[tên, tên]
Bằng cách sử dụng hàm lastname
1, bạn không cần phải sử dụng tên của phần tử cha, nó sẽ tự động kế thừa các phương thức và thuộc tính từ cha của nó
Thêm thuộc tính
Thí dụ
Thêm một thuộc tính có tên là lastname
3 vào lớp Student
Sinh viên lớp[Người].
def __init__[self, fname, lname].
super[]. __init__[fname, lname]
bản thân. năm tốt nghiệp = 2019
Trong ví dụ bên dưới, năm lastname
5 phải là một biến và được chuyển vào lớp Student
khi tạo đối tượng sinh viên. Để làm như vậy, hãy thêm một tham số khác vào hàm __init__[]
Thí dụ
Thêm tham số lastname
7 và chuyển đúng năm khi tạo đối tượng
Sinh viên lớp[Người].
def __init__[self, fname, lname, year].
super[]. __init__[fname, lname]
bản thân. năm tốt nghiệp = năm
x = Sinh viên["Mike", "Olsen", 2019]
Tự mình thử »Thêm phương pháp
Thí dụ
Thêm một phương thức có tên là lastname
8 vào lớp Student
Sinh viên lớp[Người].
def __init__[self, fname, lname, year].
super[]. __init__[fname, lname]
bản thân. năm tốt nghiệp = năm
def welcome[self].
print["Chào mừng", tự. tên, bản thân. họ, "đến lớp", tự. năm tốt nghiệp]
Nếu bạn thêm một phương thức trong lớp con trùng tên với một hàm trong lớp cha, thì tính kế thừa của phương thức cha sẽ bị ghi đè
Kiểm tra bản thân với các bài tập
Bài tập
Cú pháp chính xác để tạo một lớp có tên là Sinh viên sẽ kế thừa các thuộc tính và phương thức từ một lớp có tên là Người?