浅谈面向对象的四大特性

1.封装
What?
封装就是用来隐藏信息,保护数据访问。 我们人就是一个完美的封装体现,给你物料的入口(吃),出口(拉),还给你调节增强的接口(训练),将其它的信息都隐藏起来了。封装你可以理解为给一个战士增加一副铠甲,保护我们重要的部位不受伤。

How?
暴露有限接口和属性,需要编程语言提供访问控制的语法。

Why?
提高代码可维护性;降低接口复杂度,提高类的易用性

2.抽象
What?
隐藏具体实现,使用者只需关心功能,无需关心实现。 封装讲的是如何隐藏信息,而抽象讲的是隐藏方法的具体实现,让调用者只关心方法提供了哪些功能即可,无需关心实施类的细节实现,简化一些复杂的操作,就像人的大脑一样,处理太多杂乱的东西就会承受不了,所以我们只需要记住重要的东西,归特性的东西,忽视细节。

How?
通过接口类或者抽象类实现,特殊语法机制非必须。

Why?
提高代码的扩展性,维护性;降低复杂度,减少细节负担。

3.继承
What?
表示is-a关系,分为单继承和多继承。 你也可以形象的理解为师傅掌对掌传输武功(毫无保留),生活中的富二代也是一个典型的例子,继承父亲的财富。

How?
需要编程语言提供特殊语法机制。例如Java的“extends",C++的“:”。

Why?
解决代码复用问题。

Java不支持类多继承,因为会导致钻石问题(菱形继承),假设类B和类C继承字类A,都重写了类 A 中的同一个方法,而类 D 同时继承了类 B 和类 C,那么此时类 D 会继承 B、C 的方法,那对于 B、C 重写的 A 中的方法,类 D 会继承哪一个呢?这里就会产生歧义。考虑到这种二义性问题,Java 不支持多重继承。但是 Java 支持多接口实现,因为接口中的方法,是抽象的,就算一个类实现了多个接口,且这些接口中存在某个同名方法,但是我们在实现接口的时候,这个同名方法需要由我们这个实现类自己来实现,所以并不会出现二义性的问题。

4.多态
What?
子类替换父类,在运行是调用子类的实现。 多态个人理解为就是一种事物的多种表现形式,例如水可以变成水蒸气也可以变成冰。

How?
需要编程语言提供特殊的语法机制。比如继承、接口类、duck-typing.

Why?
提高代码扩展性和复用性。

从以上我们可以看出,面向对象的终极目的只有一个:可维护性。易扩展,易复用,降低复杂度等等都属于可维护性的实现方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值