注意: 面向对象不是一种语法,而是一种思想,是一种编程模式
面向对象编程(OOP)是计算机科学中一个年代久远的编程范式。现在所知的一些OOP概念最开始出现于上个世纪50年代,可是直到1967年Simula及后来Smalltalk语言的出现,可辨识的OOP才应运而生。
概念
OOP的基础理念非常简单直观:对象 是一个逻辑相关的数据和功能的集合。它以人类对世界的自认理解为设计理念。好比一辆车,它有数据(品牌、型号、门数、VIN等等)和功能(加速、减速、刹车、移动、开门等等)。此外OOP使得编程人员能够以抽象(一辆车)和具体(某辆具体的车)的思维去思考事物。
OOP相关的基本词汇
- 类 指的是通用的东西(车)。
- 实例(或者对象实例) 指的是具体的东西(一辆具体的车)。
- 方法 指的是一个功能(加速、减速、刹车)。
- 跟类相关,但是不涉及特定实例的功能叫做类方法(比如:create new VIN,可能就是一个类方法:它不特指某辆具体的车,的确,我们并不希望某辆具体的车能够创建新的、合法的VIN)。
简单了解面向对象三大特征
- 封装
- 继承
- 多态
封装: 也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承: 它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
注意:继承会继承父类的实例属性和实例方法,并不会继承静态属性和静态方法,并且静态方法只能通过类名去调用。
多态: 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
三大特征优点
封装: 封装的优势在于定义只可以在类内部进行对属性的操作,外部无法对这些属性指手画脚,要想修改,也只能通过你定义的封装方法;
继承: 继承减少了代码的冗余,省略了很多重复代码,开发者可以从父类底层定义所有子类必须有的属性和方法,以达到耦合的目的;
多态: 多态实现了方法的个性化,不同的子类根据具体状况可以实现不同的方法,光有父类定义的方法不够灵活,遇见特殊状况就捉襟见肘了