073、类的三大特征初识

发布于:2024-06-26 ⋅ 阅读:(139) ⋅ 点赞:(0)

(1)继承

类之间可以通过继承建立父子关系,子类可以继承父类的属性和方法,并可以添加自己的特定属性和方法。如下是一个简单示例:

class Student(Person):
    def __init__(self, name, age, student_id):
        super().__init__(name, age)
        self.student_id = student_id

    def study(self, subject):
        print(f"{self.name} is studying {subject}.")

# 创建Student类的对象
student = Student("Charlie", 20, "12345")
student.greet()  # 调用从父类继承的方法
student.study("Math")  # 调用子类特有的方法

(2)、封装

封装也是类的三大特征之一。它允许将数据(属性)和操作(方法)捆绑在一起,同时隐藏对象的内部实现细节。这样可以防止外部直接访问对象的内部数据,只能通过对象提供的接口(方法)来访问和修改数据。如下是一个简单示例:

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.__odometer_reading = 0  # 使用双下划线开头表示私有属性

    def get_odometer_reading(self):
        return self.__odometer_reading

    def update_odometer(self, mileage):
        if mileage >= self.__odometer_reading:
            self.__odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")

# 创建Car类的对象
my_car = Car("Toyota", "Corolla", 2022)

# 尝试直接访问私有属性(会报错)
# print(my_car.__odometer_reading)

# 通过公有方法访问和修改私有属性
print(my_car.get_odometer_reading())  # 输出: 0
my_car.update_odometer(100)
print(my_car.get_odometer_reading())  # 输出: 100

在这个示例中,__odometer_reading属性被定义为私有属性,外部无法直接访问,只能通过公有方法get_odometer_reading()update_odometer()来访问和修改属性的值,从而实现了封装。

(3)、多态

多态是类的三大特征的另外一个,它允许不同类的对象对同一个方法做出不同的响应。在多态中,同一个方法名可以在不同的类中有不同的实现,从而提高了代码的灵活性和可扩展性。

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

# 创建不同类的对象
dog = Dog()
cat = Cat()

# 调用相同的方法,但根据对象的类型会有不同的行为
print(dog.speak())  # 输出: Woof!
print(cat.speak())  # 输出: Meow!

在这个示例中,Animal类有一个speak()方法,而Dog类和Cat类分别继承Animal类并重写了speak()方法。当调用speak()方法时,根据对象的具体类型,会执行对应类中的方法实现,实现了多态的特性。


网站公告

今日签到

点亮在社区的每一天
去签到