zoukankan      html  css  js  c++  java
  • 面向对象之继承与多态

      一、访问修饰符的使用域

    public可以在类的内部、子类、其他类以及程序中调用
    internal 可以在类内部、子类、其他类中调用,不能在程序集中调用
    protected可以在类内部、子类中调用,不可在其他类以及程序集中调用
    private只可在定义的类内部调用,不可在子类、其他类以及程序集中调用

    二、继承:将上一层次的东西选择性的传递下来,从而提高代码的重用性,降低了程序的复杂性

    1、继承类:默认继承(system.object)
     a)单向继承,一个子类只能派生自一个类,具有单根性,可继承多个接口
     b)定义语法:

    访问修饰符 class 子类名 :派生类名{代码片段}

     c)作用:可增加、修改、替换类中的方法对类进行扩充

    2、调用积累构造函数
     a)默认的构造:进行实例化时需遵循的规则:先调用基类无参构造,再调子类构造
     b)base关键字调用基类构造:
      语法:
       调用基类构造:

    子类构造函数(参数列表):base(参数列表)

       调用基类方法或属性:

    base.属性/方法

      作用:提高数据安全性
      调用顺序:基类构造,子类构造
     注:base关键字访问基类成员不可在静态方法 ,不能访问基类的私有成员

    3、继承的传递性:不限定传递次数,若不想该类进行派生可使用sealed定义密封类

    4、隐藏类成员与访问:用new关键字显式的隐藏基类继承下来的成员
     
    5、继承规则
     a)可传递
     b)派生类是对基类的扩展
     c)基类中的构造函数和析构函数以及访问修饰符为private的成员不可被继承
     d)若子类定义与基类相同的新成员,基类成员会被覆盖,在子类中不可访问基类中被覆盖的相关成员
     e)类中可定义虚方法、属性,子类中重载,实现

    二、多态:同一操作给予不同的对象会产生不同的执行结果

    1、多态分为:重写和重载
       重载:方法名相同,参数类型、个数、顺序不同 使用关键字new
    2、重写:在基类中定义虚方法,在子类中使用override对该方法进行重写
       虚方法关键字:virtual
          a)声明语法:

    访问修饰符 virtual 返回值类型 方法名(参数列表){虚方法的初始实现}

       关键字override:子类中修改基类方法的实现,基类中必须有virtual方法或abstract方法


    3、virtual关键字不仅可以定义虚方法,也可定义其他虚成员,让子类进行重写
    a)基类虚成员呗重写时,需使用相同访问修饰符
    b)类成员被虚化了则不能被抽象化,virtual与abstract 同时出现在同一成员上
    c)new virtual static关键字不能与override同时使用
    d)子类使用new关键字隐藏基类成员,则该成员声明时不用override关键字

    三、里氏替换原则:子类可以替换基类,并出现在基类能够出现的任何地方,基类不能替换子类

    例:Student为Person类派生出来的子类

    Student is a Person
    Person p=new student();


     

  • 相关阅读:
    R语言数据框部分笔记
    R语言数组部分的笔记
    R语言向量部分的笔记
    计算机等级考试二级python 第二章 python的基本语法元素
    计算机二级教程python第一章 程序设计语言
    Linux C实现发邮件功能
    telnet收发邮件
    Linux进(线)程同步各种锁
    About Mutex
    wait()与waitpid()与pthread_join()
  • 原文地址:https://www.cnblogs.com/DBtwoer/p/3132505.html
Copyright © 2011-2022 走看看