• 面向对象高级5.3


    本周我们围绕多态来进行的学习,所谓多态就是指同一操作作用于不同的对象,会产生不同的结果。多态可以使程序变得更加灵活,从而有效提高程序的可扩展性和可维护性。实现多态的方式有很多种,重写就是其中的一种。其中有一个知识点:动态绑定。所谓动态绑定就是把派生类的对象,地址赋给基类的引用变量。

    * 多态存在的三个必要条件:

    1.多态以继承为基础--继承。

    2.按照契约形成另一种形态(特殊性)--重写。

    3.父类引用指向子类对象--使用时“动态绑定”。

    * 多态的内在实现机制:

    1.编译器为每一个含virtual关键字的方法构建--Vtrl--虚函数表--存储每个虚方法的首址。

    2.派生类如果改写了(override)方法,则派生类的Vtrl--虚函数表--的虚方法首址将改变,指向新的已经被override的新方法。

    3.动态绑定时,基类的对象引用它绑定的是那个派生类的对象,那么这个基类引用对象就将引用那个派生类的override方法。

    重写父类方法时,要求子类的方法名,参数类型和参数个数必须与父类方法相同,而且父类方法必须使用virtual关键字修饰,子类方法必须使用override关键字修饰,被virtual关键字修饰的方法称为虚方法。

    base关键字是基类的引用,它专门用于在子类中访问父类的成员。它不但可以调用父类的字段和方法,还可以调用父类的构造方法。在c#中可以使用一个父类类型的变量来引用一个子类类型的对象,即将子类对象当作父类类型来使用,这就是所谓的里氏转换原则。这也说明了在继承关系中当子类对象赋值给父类变量的情况下,父类变量也可以通过强制转换指向子类变量。与其相关的还有is和as关键字,它们都可以用来判断父类对象是否指向子类,as关键字除了判断以外,还有直接转换功能。如果判断成功就直接进行类型转换,如果判断失败就返回null。在c#中还提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承自该类。

  • 相关阅读:
    C#中的Virtual
    DevExpress控件中LayoutControl的使用
    汉字获取首字母拼音
    工具类
    C# 根据时间创建文件夹
    图片延迟加载
    IIS日志分析的作用
    SQL2008R2 无法读取此系统上以前注册的服务器的列表--网上方法不可行
    windows 服务器系统日志分析及安全
    301跳转
  • 原文地址:https://www.cnblogs.com/mwt63/p/10707163.html
Copyright © 2020-2023  润新知