一前言说到面向对象,我们似乎总会在第一时间想到Java、C++、Python
对,这些都是提供了面向对象支持的语言
但事实上,面向对象就是语言本身吗
稍有点编程经验的人都会有一个否定的答案
但为什么之前所述的那些语言能称之为面向对象的语言
如果语言本身并不是答案,那用非面向对象的语言,比如C,也应该能够写出面向对象的代码了
我并不是想发表什么高见,我只是想把最近看到了一些东西做一个比较系统的记录而已
同时也希望自己能够时时记住这些方式,写更漂亮的code
二面向对象什么是面向对象
似乎我还没有能力去下这个定义
是Class
Object
还是Interface
在我看来,也正是因为语言本身从语法的级别开始就支持这种概念,才使之有资格成为一种面向对象的编程语言
但当然这还不足以完全地定义一个面向对象的语言,因为这只是从封装的概念来描述面向对象的概念
然后应该是多态
重载是一个重要的方面,它使得同样的接口在不同的对象中出现不同的行为
这样的特性其实源于封装,不单只把对象的状态封装起来,还把对象的接口也包含在内
正是因为这种封装形式的存在,才使的基于接口的程序设计方式能够在这个时代大放异彩
这样的特性带来了两个好处:代码重用和解偶
首先,把代码以类的形式封装,使得代码能够以一种更具逻辑性的方式在不同的地方得到重用
函数本身也是一种重用的概念,但它本是跟它所需要处理的数据没有显著的语法层次上的关联,类则使得方法与数据有机地组合在一起
因此,在重用的概念上,类不但重用了逻辑,还重用了逻辑所处理的数据
因此在面向对象的领域中,代码得到了更大程度的重用
关于怎么封装代码,大家可以参考“敏捷”、“测试驱动”之类的书籍
另外,现代程序设计更倾向于写“羞涩的”代码,也就是说,把内部的逻辑私有化
但同时它还有另外一层意思,不单只是类内部的逻辑不应该被外部所了解,就算是类本身的