对封装、继承、多态的简单理解

本文深入探讨了面向对象编程的三大核心概念:封装、继承和多态。详细解释了它们的作用,如何避免代码冗余,以及如何通过这些特性提高代码的安全性和扩展性。

封装:
封装的目的是为了减少代码冗余,避免重复性使用代码。
所以定义方法,可以视为对一段同样作用代码的封装,来降低代码重复性
定义一个类,接口等等,也可以视为对具有相同特性的代码块的封装。
同样关键字enum,也可视为对Enum类的封装。
封装,主要在装,即包装成一个整体,但封也同要重要,这代表着安全性,所以权限修饰符的封装意义更多体现在对装的安全要求,即封。
总而言之,在写代码时,当遇到大量重复性代码时,就要考虑是否可以封装来优化。

继承:
可以视为避免重复性的封装。
无论继承类还是实现接口,都是因为父类(接口)中有一段重复性代码(属性或功能)同样适用于子(实现)类,为避免重复封装这段代码,所以才有了继承的体现。

多态:
可以视为对继承功能的优化,即一种对拥有继承特性代码的新使用方式。
多态的前提就是继承,因为所有子(实现)类都适用父类(接口)中的一段重复性代码(属性或功能),所以将所有调用该功能的子(实现)类对象都指向父类引用来避免子类重复性声明或者提高代码扩展性。
因此 多态的使用要在继承(接口实现)的过程中含有方法重写才更有意义。

Python 中的封装继承多态是面向对象编程的重要概念,有助于提高代码的可读性、可维护性和复用性[^1]。 封装是一种将数据(属性)和操作(方法)包装在一起的机制,并且对外部隐藏对象的内部细节。在 Python 中,通过类来实现封装。例如,在一个 `BankAccount` 类中,通过双下划线 `__` 来定义私有属性,外部无法直接访问,只能通过特定的方法进行访问和修改,保证了对象内部状态的安全性。代码示例如下: ```python class BankAccount: def __init__(self, account_number, balance): self.__account_number = account_number self.__balance = balance def deposit(self, amount): self.__balance += amount def withdraw(self, amount): if self.__balance >= amount: self.__balance -= amount else: print("Insufficient balance.") def get_balance(self): return self.__balance ``` 这样,`__account_number` 和 `__balance` 只能通过 `deposit`、`withdraw` 和 `get_balance` 等方法进行操作,外部不能直接访问和修改,保护了对象的内部状态 [^2]。 继承允许一个类(子类)继承另一个类(父类)的属性和方法,子类可以复用父类的代码。继承分为单继承和多重继承,单继承是指一个子类只继承一个父类,多重继承是指一个子类可以同时继承多个父类的特性,但需要小心使用,以避免复杂性和方法冲突。例如,定义一个 `Person` 类,然后定义 `Father` 类和 `Mother` 类继承自 `Person` 类,`Father` 类和 `Mother` 类就可以复用 `Person` 类的属性和方法 [^1]。 多态是指在执行相同代码情况下,根据对象所属类的不同去调用相应类的方法,从而执行不同效果。多态发生的两个前提是继承和重写,即多态一定是发生在子类和父类之间,并且子类重写了父类的方法。例如,定义 `Person` 类、`Father` 类和 `Mother` 类,`Father` 类和 `Mother` 类继承自 `Person` 类,并且重写了 `drink` 方法,当调用 `drink` 方法时,根据对象所属类的不同会调用不同的 `drink` 方法,实现不同的效果。代码示例如下: ```python class Person(object): def __init__(self, name="小明"): self._name = name def drink(self): print(self._name + "喝水") class Father(Person): def drink(self, name): super().drink() print(name + "喝水") class Mother(Person): def drink(self): print("妈妈喝水") father = Father() father.drink("小红") mother = Mother() mother.drink() ``` 上述代码中,`father` 和 `mother` 调用相同的 `drink` 方法,但由于它们所属的类不同,执行的效果也不同 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值