Wednesday, February 12, 2025

[Python] Lesson 38 – Inheritance

-

Inheritance trong OOP là một kỹ thuật cho phép một lớp có thể kế thừa thuộc tính và phương thức từ một lớp khác. Lớp con có thể được tạo ra bằng cách sử dụng từ khóa “class” và kế thừa các thuộc tính và phương thức của lớp cha.

Cú pháp khai báo của Inheritance trong Python:

class ChildClass(ParentClass):
    # Code of child class

Trong đó:

  • ChildClass: là tên của lớp con (subclass)
  • ParentClass: là tên của lớp cha (superclass) mà lớp con kế thừa từ đó.

Lớp con sẽ thừa hưởng tất cả các thuộc tính và phương thức của lớp cha, và có thể định nghĩa thêm các thuộc tính và phương thức riêng cho mình.

Các ví dụ minh họa:

1. Kế thừa từ lớp cha Person.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def display_info(self):
        print(f"Name: {self.name}\nAge: {self.age}")

class Student(Person):
    def __init__(self, name, age, major):
        super().__init__(name, age)
        self.major = major
        
    def display_info(self):
        super().display_info()
        print(f"Major: {self.major}")

person1 = Person("Alice", 25)
person1.display_info()

student1 = Student("Bob", 20, "Computer Science")
student1.display_info()

2. Kế thừa từ lớp cha Animal.

class Animal:
    def __init__(self, name, species):
        self.name = name
        self.species = species
        
    def speak(self):
        pass

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name, "Canine")
        self.breed = breed
        
    def speak(self):
        return "Woof"

class Cat(Animal):
    def __init__(self, name):
        super().__init__(name, "Feline")
        
    def speak(self):
        return "Meow"

dog1 = Dog("Fido", "Labrador")
cat1 = Cat("Fluffy")

print(dog1.name, dog1.species, dog1.breed, dog1.speak())
print(cat1.name, cat1.species, cat1.speak())

3. Kế thừa từ lớp cha Shape.

class Shape:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, x, y, width, height):
        super().__init__(x, y)
        self.width = width
        self.height = height
        
    def area(self):
        return self.width * self.height

class Circle(Shape):
    def __init__(self, x, y, radius):
        super().__init__(x, y)
        self.radius = radius
        
    def area(self):
        return 3.14 * self.radius ** 2

rect1 = Rectangle(0, 0, 10, 5)
circle1 = Circle(0, 0, 3)

print(rect1.area())
print(circle1.area())

4. Ví dụ về việc sử dụng inheritance để quản lý hệ thống.

Đây là một ví dụ về việc sử dụng inheritance để quản lý hệ thống người dùng trên Linux. Trong đó, chúng ta sẽ xây dựng một lớp cha User và các lớp con Admin và RegularUser, tương ứng với người dùng có quyền hạn đặc biệt và người dùng bình thường.

class User:
    def __init__(self, username, password, full_name, email):
        self.username = username
        self.password = password
        self.full_name = full_name
        self.email = email
    
    def login(self):
        # some code to verify user's credentials
        pass
    
    def logout(self):
        # some code to log out the user
        pass
    
    def get_username(self):
        return self.username
    
    def get_full_name(self):
        return self.full_name
    
    def get_email(self):
        return self.email

class Admin(User):
    def __init__(self, username, password, full_name, email, privileges):
        super().__init__(username, password, full_name, email)
        self.privileges = privileges
    
    def grant_privilege(self, privilege):
        self.privileges.append(privilege)
    
    def revoke_privilege(self, privilege):
        self.privileges.remove(privilege)
    
    def get_privileges(self):
        return self.privileges

class RegularUser(User):
    def __init__(self, username, password, full_name, email, group):
        super().__init__(username, password, full_name, email)
        self.group = group
    
    def join_group(self, group):
        self.group.append(group)
    
    def leave_group(self, group):
        self.group.remove(group)
    
    def get_group(self):
        return self.group

Trong ví dụ này, lớp User là lớp cha chung cho tất cả các loại người dùng trên hệ thống, bao gồm cả Admin và RegularUser. Lớp Admin kế thừa từ lớp User và thêm vào các thuộc tính và phương thức đặc biệt cho phép quản lý quyền hạn của người dùng. Tương tự, lớp RegularUser cũng kế thừa từ lớp User và có thêm các thuộc tính và phương thức để quản lý nhóm của người dùng.

Ví dụ này chỉ mang tính chất minh họa, tuy nhiên, trong thực tế, việc sử dụng inheritance trong Python để quản lý hệ thống có thể giúp quản lý và triển khai hệ thống hiệu quả hơn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories