打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
浅谈封装,继承,多态,绑定
1,封装
      (1)     过程封装
        实现了操作的封装,而操作所需要的数据是公开的,作为子程序的参数传递给子程序,所以,缺乏对数据的保护。
   (2)  数据封装
        面向对象中,是通过对象实现了数据及其操作的封装,用户看不到数据,所以,加强了对数据的保护。
2,继承
     (1)分类:
              1)单继承
                    一个类只有一个直接基类;
              2)多继承
                    一个类可以有多个直接基类;
  (2)继承的方式
       publicprotectedprivate
    (3)涉及到的概念
             1)虚函数(涉及到:覆盖,即(多态性,绑定))
                   注意:
                        区分覆盖和重载:
                        a)重载:是指允许存在多个同名函数,而这些函数的参数表不同(参数个数,参数类型不同)
                                          是在编译期间就绑定了,是静态的;
                                          所以重载与多态无关。
                                          重载只是一种语言特性,与多态无关,与面向对象也无关。
                       b)覆盖:虚函数总是在派生类中被重写(重写的函数必须有一致的参数表和返回值)
                                      当子类重新定义了父类的虚函数后,父类的指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数;
                                      这样的函数调用在编译期间是无法确定的,函数的地址是在运行期绑定的。
             2)纯虚函数,抽象类
3,多态
     (1) 定义:多态性可以简单的概括为“一个接口,多种方法”,在程序运行的过程中才决定调用的函数;
     (2)多态的体现形式:
       1)  一名多用:
           主要指重载,(函数名重载,操作符重载)
       2)  类属性
           主要指:
              类属函数:是指一个函数能对多种类型的参数进行操作(在C++语言中,通过指针和函数模板来实现)
              类属类型:是指一个类型可以描述多种类型的数据。(在C++语言中,可以用联合类型和类模板来实现)
   (3)面向对象程序中存在的多态关系:
       1)  消息的多态:(一个消息,父类和子类有不同的解释)
       2)  对象类型的多态:(子类对象,即属于子类也属于父类)
       3)  对象标识的多态:(父类的引用或指针可以引用或指向子类的对象)
   (4)多态性带来的好处:
       1)  易于实现高层(上层)代码的复用
       2)  使程序的扩充变得容易(只要增加底层的具体实现)
       3)  还能增强语言的可扩充性(重载操作符,对用户自定义的类型的数据进行操作)
4, 绑定:
    是一个与多态性相关的概念
   (1)定义:是指确定对多态元素使用的过程,即确定对多态元素的某个使用是多态元素的哪一种形式。
   (2)分类:
        1)  静态绑定
           是在编译时刻确定对多态元素的使用;
           大多数形式的多态采用静态绑定。
        2)  动态绑定
           是在运行时刻确定对对态元素的使用。
           有些多态如:消息多态和对象标识的多态采用动态绑定。
总结:
  1,封装可以隐藏实现细节,是的代码模块化;
  2,继承可以扩展已存在的代码模块(类);
  3,多态是为了实现另一个目的---接口重用。
  它们都是为了代码重用;
  但是现实往往是,要有效的实现代码重用很难,而真正最有价值的重用是接口重用;
  聚合现在会很好的取代继承的扩展功能,所以现在继承的存在很大程度上是作为“多态”的基础。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
03选择题: C++中重写
Java重载与重写的区别
java的重载与重写
多态的实现、重载和覆盖(重写)
C#重载与重写的区别
C#中override和overload的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服