面向对象——继承、封装、多态

20 篇文章 2 订阅

什么是面向对象?

面向对象(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。OOP的核心概念包括类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)等。


继承(Encapsulation)

继承允许一个类(子类)从另一个类(父类)获取属性和方法。子类可以复用父类的代码,并添加新的属性和方法或重写父类的方法。

继承的好处
  • 代码重用:子类可以继承父类的属性和方法,避免重复代码,从而提高开发效率。
  • 代码扩展性:子类可以扩展或重写父类的方法,增加新的功能,而不需要修改现有代码。
  • 维护和更新方便:修改父类的代码可以影响所有子类,从而简化维护和更新。
  • 设计一致性:继承保证了设计的一致性,使得代码结构更加清晰,便于理解和使用。
  • 多态性的基础:继承是实现多态的基础,允许通过父类引用指向子类对象,实现动态绑定。

封装(Inheritance)

将属性和方法书写到类里面的操作即为封装。并为属性和方法设置访问权限,提高了代码的安全性和可维护性。

封装的好处
  • 数据隐藏和保护:封装将对象的内部状态(属性)隐藏起来,防止外部直接访问和修改,保护数据的完整性和安全性。
  • 控制访问和修改:通过公有方法(getter和setter)控制对属性的访问和修改,确保数据的合法性和一致性。
  • 提高代码的模块化和可维护性:将相关的属性和方法组织在一个类中,使代码更加模块化,便于理解、调试和维护。
  • 提高代码的重用性:通过封装,将通用功能封装在类中,可以在不同的场景中重用这些类,而无需重复编写相同的代码。
  • 隔离变化:类的内部实现细节对外部不可见,如果类的内部实现发生变化,外部代码不需要修改,提高了代码的稳定性和可扩展性。

多态(Polymorphism)

多态是允许一个接口或父类的引用指向不同的子类对象,并调用这些子类对象的方法。多态分为编译时多态(方法重载)和运行时多态(方法重写)。

多态的好处
  • 提高代码的灵活性和扩展性:多态允许通过统一的接口处理不同类型的对象,便于扩展和修改。
  • 提高代码的重用性:父类的引用可以指向不同的子类对象,实现代码重用,相同的代码可以处理不同类型的对象。
  • 提高代码的可维护性:隐藏具体实现细节,便于维护和修改,通过抽象父类或接口定义统一的接口,使得具体实现的细节被隐藏。
  • 支持设计模式和框架:多态是许多设计模式(如策略模式、工厂模式、命令模式等)和框架实现的基础,促进高度解耦和灵活的设计。
  • 简化代码和提高可读性:通过统一的接口和抽象层次,减少复杂性,使代码更易于理解和阅读,不同的对象类型可以通过相同的接口进行操作。

组合示例

# 封装
class Animal:
    def __init__(self, name):
        self.__name = name  # 私有属性

    def get_name(self):
        return self.__name

    def speak(self):
        raise NotImplementedError("子类必须实现抽象方法")


# 继承
class Dog(Animal):
    def speak(self):
        return "汪汪"

class Cat(Animal):
    def speak(self):
        return "喵喵"


# 多态
def animal_speak(animal):
    print(f"{animal.get_name()} 的叫声: {animal.speak()}")

dog = Dog("狗")
cat = Cat("猫")

animal_speak(dog)  # 输出: 狗 的叫声: 汪汪
animal_speak(cat)  # 输出: 猫 的叫声: 喵喵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7 号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值