2.14_面向对象编程基础

73 阅读2分钟

2.14 面向对象编程基础

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它使用对象来设计应用程序,并将数据和方法封装在对象中。Python是一种支持面向对象编程的语言,它允许开发者定义类和对象,以及使用继承、封装和多态等OOP特性。

1. 类和对象

在Python中,一切都是对象。类是创建对象的蓝图,而对象是类的实例。

定义一个类
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model
​
    def start_engine(self):
        print("Engine started.")
​
# 创建Car类的一个实例
my_car = Car("Toyota", "Corolla")
my_car.start_engine()

2. 封装

封装是将数据(属性)和操作数据的方法(行为)捆绑在一起的过程。在Python中,可以通过使用私有变量(以两个下划线开头)和公有变量(以单个下划线开头或没有下划线)来实现封装。

class Account:
    def __init__(self, account_number, balance):
        self.__account_number = account_number  # 私有变量
        self.__balance = balance  # 私有变量
​
    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
            print("Deposit successful.")
​
    def get_balance(self):
        return self.__balance
​
# 创建Account类的一个实例
account = Account("123456789", 1000)
account.deposit(500)
print(account.get_balance())

3. 继承

继承允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以扩展父类的功能或覆盖父类的方法。

class Vehicle:
    def start_engine(self):
        print("Engine started.")
​
class Car(Vehicle):  # Car继承自Vehicle
    def start_engine(self):
        print("Car engine started.")
​
my_car = Car()
my_car.start_engine()

4. 多态

多态是指不同类的对象对同一消息做出响应的能力。在Python中,多态是通过方法重写实现的。

class Animal:
    def speak(self):
        pass
​
class Dog(Animal):
    def speak(self):
        print("Woof!")
​
class Cat(Animal):
    def speak(self):
        print("Meow!")
​
def animal_sound(animal):
    animal.speak()
​
dog = Dog()
cat = Cat()
animal_sound(dog)  # 输出: Woof!
animal_sound(cat)  # 输出: Meow!

5. 抽象

抽象是将复杂的现实问题简化为简单的模型的过程。在Python中,可以通过定义接口(使用abc模块)来实现抽象。

from abc import ABC, abstractmethod
​
class Shape(ABC):
    @abstractmethod
    def area(self):
        pass
​
class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius
​
    def area(self):
        return 3.14 * self.radius ** 2
​
circle = Circle(5)
print(circle.area())

6. 组合

组合是将一个类的实例作为另一个类的属性。这允许代码重用和更复杂的对象结构。

class Engine:
    def start(self):
        print("Engine started.")
​
class Car:
    def __init__(self):
        self.engine = Engine()  # 组合
​
    def start(self):
        self.engine.start()
        print("Car started.")
​
my_car = Car()
my_car.start()

面向对象编程是一种强大的编程范式,它可以帮助开发者构建可维护、可扩展和模块化的代码。通过理解和应用OOP的基本概念,你可以编写更清晰、更有效的Python程序。

4-1-2.png