Monday, February 24, 2025

[Python] Lesson 41 – Phân biệt multiple inheritance và multilevel inheritance

-

Multiple inheritance và multilevel inheritance đều là các khái niệm liên quan đến kế thừa trong lập trình hướng đối tượng, tuy nhiên có sự khác biệt về cú pháp khai báo và cách thức thực hiện kế thừa.

  • Multiple inheritance: cho phép một class kế thừa các thuộc tính và phương thức từ nhiều class cha khác nhau. Cú pháp khai báo là sử dụng dấu phẩy “,” để liệt kê danh sách các class cha sau từ khóa “class”.

Ví dụ:

class A:
    def foo(self):
        print('A.foo')

class B:
    def foo(self):
        print('B.foo')

class C(A, B):
    pass

c = C()
c.foo() # Output: A.foo
  • Multilevel inheritance: là việc kế thừa từ một class cha và class con cùng một lúc. Nghĩa là một class con sẽ kế thừa các thuộc tính và phương thức của một class cha, và sau đó được kế thừa bởi một class khác. Cú pháp khai báo là sử dụng dấu ngoặc đơn “()” để đặt tên class cha trong khai báo class.

Ví dụ:

class A:
    def foo(self):
        print('A.foo')

class B(A):
    pass

class C(B):
    pass

c = C()
c.foo() # Output: A.foo

Về cách thức thực hiện kế thừa, multilevel inheritance sẽ có sự kế thừa được thực hiện tuần tự, từ class cha tới class con. Trong khi đó, multiple inheritance sẽ có sự kế thừa được thực hiện đồng thời từ các class cha.

Đây là một ví dụ đơn giản tiếp theo về multiple inheritance trong Python:

class A:
    def method_a(self):
        print("This is method_a of class A")
 
class B:
    def method_b(self):
        print("This is method_b of class B")
 
class C(A, B):
    def method_c(self):
        print("This is method_c of class C")
 
c = C()
c.method_a()
c.method_b()
c.method_c()

Trong ví dụ này, chúng ta định nghĩa 3 classes: A, B, và C. AB đều có một phương thức riêng (method_amethod_b), còn C kế thừa từ cả AB và cũng có một phương thức riêng (method_c).

Khi chúng ta khởi tạo một đối tượng c của class C, nó có thể truy cập được đến tất cả các phương thức từ cả A, BC. Cụ thể, chúng ta gọi các phương thức này bằng cách gọi đối tượng c kết hợp với tên phương thức tương ứng (c.method_a(), c.method_b(), và c.method_c()).

Dòng class C(A, B): có ý nghĩa định nghĩa class C kế thừa từ cả AB. Đây là cú pháp để khai báo multiple inheritance trong Python. Khi đó, C sẽ có tất cả các thuộc tính và phương thức từ AB.

Trong phương thức method_c của class C, chúng ta chỉ đơn giản in ra một thông báo trên màn hình. Tuy nhiên, nếu cần thiết, phương thức này có thể sử dụng các thuộc tính và phương thức của cả AB.

Các phương thức method_amethod_b của class AB cũng chỉ đơn giản in ra các thông báo trên màn hình. Tuy nhiên, chúng có thể có các chức năng phức tạp hơn tùy thuộc vào mục đích của chương trình.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories