Python类的定义、封装、继承和多态
# 定义一个基础类 Animal,用于表示动物
class Animal:
# 构造函数,用于初始化动物的名称和年龄
def __init__(self, name, age):
self.__name = name # 将名称设置为私有属性,防止外部直接访问
self.__age = age # 将年龄设置为私有属性,防止外部直接访问
# 以下是 Getter 和 Setter 方法,用于安全地访问和修改私有属性
# 获取动物名称的方法
def get_name(self):
return self.__name
# 设置动物名称的方法
def set_name(self, name):
self.__name = name
# 获取动物年龄的方法
def get_age(self):
return self.__age
# 设置动物年龄的方法,确保年龄为正数
def set_age(self, age):
if age > 0:
self.__age = age
# 定义一个抽象方法 make_sound,子类需要重写此方法以提供具体实现
def make_sound(self):
pass # 此处不实现,仅作为接口
# 定义一个 Dog 类,继承自 Animal 类,表示狗
class Dog(Animal):
# 构造函数,初始化狗的名称、年龄和品种
def __init__(self, name, age, breed):
super().__init__(name, age) # 调用父类构造函数初始化名称和年龄
self.__breed = breed # 将品种设置为私有属性
# 获取狗品种的方法
def get_breed(self):
return self.__breed
# 设置狗品种的方法
def set_breed(self, breed):
self.__breed = breed
# 重写 make_sound 方法,提供狗叫的具体实现
def make_sound(self):
return "Woof!"
# 定义一个 Cat 类,继承自 Animal 类,表示猫
class Cat(Animal):
# 构造函数,初始化猫的名称、年龄和颜色
def __init__(self, name, age, color):
super().__init__(name, age) # 调用父类构造函数初始化名称和年龄
self.__color = color # 将颜色设置为私有属性
# 获取猫颜色的方法
def get_color(self):
return self.__color
# 设置猫颜色的方法
def set_color(self, color):
self.__color = color
# 重写 make_sound 方法,提供猫叫的具体实现
def make_sound(self):
return "Meow!"
# 以下是示例代码,用于展示如何使用上述类
# 如果当前脚本作为主程序运行
if __name__ == "__main__":
# 创建一个 Dog 对象,并初始化名称、年龄和品种
dog = Dog("Buddy", 5, "Golden Retriever")
# 创建一个 Cat 对象,并初始化名称、年龄和颜色
cat = Cat("Whiskers", 3, "Black")
# 展示封装的使用
print(f"Dog's name: {dog.get_name()}") # 输出狗的名称
dog.set_age(6) # 修改狗的年龄
print(f"Dog's age: {dog.get_age()}") # 输出狗的年龄
print(f"Cat's name: {cat.get_name()}") # 输出猫的名称
print(f"Cat's color: {cat.get_color()}") # 输出猫的颜色
# 展示多态的使用
animals = [dog, cat] # 创建一个包含狗和猫的列表
for animal in animals:
# 调用每个动物的 make_sound 方法,输出不同的叫声
print(f"{animal.get_name()} says {animal.make_sound()}")
这些注释详细解释了每个类和方法的作用,以及示例代码的功能,有助于初学者理解代码的结构和面向对象编程的基本概念。