1. 抽象
在面向对象编程中,抽象是指将类的属性和方法捆绑在一起,形成一个整体。抽象类无法实例化,但可以作为其他类的基类或父类。在Python中,我们使用abc
模块定义抽象类,其中至少包含一个抽象方法。抽象方法是无法直接调用但可以被子类覆盖的方法。
例如,我们可以定义一个Animal
类,然后派生出具体的动物类(如Cat
和Dog
),每个类都有自己的属性和方法。
class Animal:def __init__(self, name):self.name = nameclass Cat(Animal):def make_sound(self):return "Meow"class Dog(Animal):def make_sound(self):return "Woof"cat = Cat("Kitty")
dog = Dog("Buddy")print(f"{cat.name} says: {cat.make_sound()}")
print(f"{dog.name} says: {dog.make_sound()}")
2. 封装
封装是隐藏对象内部细节的机制。通过封装,我们可以确保数据的安全性和代码的可维护性。在Python中,我们使用访问修饰符来实现封装,包括公有属性和方法以及私有属性和方法。公有属性和方法可以被类的外部访问,而私有属性和方法只能在类的内部访问。
例如,我们可以使用私有属性和方法来实现封装。
class Person:def __init__(self, name, age):self.__name = name # 私有属性self.__age = agedef get_name(self):return self.__name # 公有方法def set_name(self, new_name):self.__name = new_name # 公有方法person = Person("Alice", 30)
print(person.get_name()) # 输出: Alice
person.set_name("Bob")
print(person.get_name()) # 输出: Bob
3. 继承
继承允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。子类可以继承父类的特性,并在此基础上添加自己的新特性。Python支持单继承和多继承,使得代码更具灵活性和可维护性。
例如,我们可以创建一个Teacher
类继承自Person
类。
class Person:def __init__(self, name):self.name = nameclass Teacher(Person):def teach(self, subject):return f"{self.name} teaches {subject}"teacher = Teacher("Mr. Smith")
print(teacher.teach("Math")) # 输出: Mr. Smith teaches Math
4. 多态
多态是指不同的子类对象调用相同的父类方法,产生不同的执行结果。多态性使得代码更加通用,兼容性更强。通过方法重写和方法重载,我们可以实现多态。