面对对象的三大特性? 封装、继承和多态。

1、封装

封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。
类的封装性为类的成员提供public、protect、private和default等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。。
封装可以隐藏实现细节同时包含私有成员,使得代码模块化并增加安全指数;
java访问控制级别:
private -> default -> protected -> public
private : 当前类访问权限。
default:包访问权限
protected:子类访问权限
public:公共访问权限。

2、继承

类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。
面向对象之所以使用继承机制主要是:多个类所公有的代码部分,可以只在一个类中提供,而其他类只需要继承即可。
继承可以扩展已存在的模块,目的是为了实现代码复用;
继承可分为单继承和多继承。Java不支持多继。多继承可能引起继承结构的混乱,减低程序的可理解性。

3、多态

多态与继承纤细紧密。所谓的多态是指在继承体系中,所有派生类都从基类继承接口,但由于每个派生类都是独立的实体,因此在接收同一消息的时候,可能会生成不同的响应。
多态指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征。因此同一类型的对象在执行同一个方法的时候,可能表现出多种行为特征。
具体实现:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。
简单来说:一种行为产生多种效果。
类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖(重写)。
动态多态性:
(子父类之间)继承一个类,并对他的成员函数重新进行定义(函数名称相同,参数表和返回类型相同),有两种情况:(体现动态多态性)
重定义 redefine:基类的成员函数是普通函数。
重写 override:基类的成员函数是虚函数。
静态多态性:
重载 overlode:同一个类中的多个方法:名称相同,参数数量和参数个数不能完全相同,返回类型可以相同也可以不同。(体现静态多态性)
名字隐藏:任何时候重新定义了基类中的一个重载函数,则在新类中所有的其他版本被自动隐藏。隐藏的函数需要调用,要显式调用。
多态则是为了保证:类在继承和派生的时候,保证家谱中任何类的实例被正确调用,实现了接口重用。