面向对象的特性包括:封装、继承和多态。
**封装:**可以根据自己的想法对抽象性函式接口的实现细节进行部分包装或者隐藏起来,防止该类的代码和数据被外部类定义的代码随机访问。良好的封装能够减少耦合,实现类内部的结构的自由修改,可以对成员变量进行更精确的控制,同时更好的隐藏信息,实现细节。
**继承:**子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。这样,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性。
**多态:**接口的多种不同的实现方式即为多态。在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行期间才确定。就是这个引用变量究竟指向哪一个实例对象,在编译期间是不确定的,只有运行期才能确定,这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。
(帮助理解的小例子)
多态允许将子类类型的指针赋值给父类类型的指针,把不同的子类对象都当作父类来看。比如你家有亲属结婚了,让你们家派个人来参加婚礼,邀请函写的是让你爸来,但是实际上你去了,或者你妹妹去了,这都是可以的,因为你们代表的是你爸,但是在你们去之前他们也不知道谁会去,只知道是你们家的人。可能是你爸爸,可能是你们家的其他人代表你爸参加。这就是多态。