面向对象 :
面向对象三大基本特征 : 封装 、继承 、多态 .
封装 :
说明 :
作用 :
对外公开接口 , 有利于控制读写级别 , 使代码模块化 , 更安全 .
继承 :
说明 :
面向对象的核心 , 子类继承父类 , 则子类拥有父类所有 属性 和 功能 , .
作用 :
利于修改和扩展 , 极大提高代码复用率 , 使代码结构层次清晰 .
继承形式 :
- 实现继承 : 最常见的继承形式 , 直接继承父类的属性和方法 , 无需额外的代码 .
- 抽象继承 : 继承接口中的属性和方法 , 并且必须实现接口中的方法 .
- 可视继承 : 子窗体使用父类窗体的外观和实现代码 .
多态 :
说明 :
多态即多种状态 , 不同对象调用同名函数 , 产生不同的效果 .
实现形式 :
重写 ( Override ) : 继承父类 , 重写父类的虚函数 , 不同子类实现方法不一样 , 不同对象调用一个同名函数 , 产生的效果不同 .
重载 ( Overload ): 一个类中出现两个以上同名函数 , 参数不同 , 调用时根据传参来判断具体调用哪个函数 .
作用 :
封装和继承都是为了代码复用 , 而多态的意义是实现接口重用 , 保证一条原型链上的所有实例化对象都可以正确调用 .
重点注意 :
其实重载的概念并不属于面向对象 , 但是大多数人都认为重载也是实现多态 , 这里就把重载也算进来了 , 从本质上讲 , 重载的实现原理是语言特性 , 在一个类出现两个同名函数时 , 例如 func() 和 func(int num) , 根据参数不同 , 编译器会将这两个函数编译成 void_fun 和 int_fun , 再根据调用时 , 的传参情况来决定具体调用哪个函数 , 在编译期间已经将两个函数确定好了 , 都是静态的 , 也就是说他们的地址在编译期间已经绑定好了 , 所以 , 重载与多态无关 .