zoukankan      html  css  js  c++  java
  • OOP多态和继承要点

         早期绑定和多态

    • C#函数重载的签名规则是用参数的类型和数量判断,而不是函数的名字。
    • 函数返回值不作为重载签名。
    • 修饰符不作为签名的一部分,如static
    • 同函数中,多个参数名称要唯一
    • ref、out是引用传递,传递的是参数的内存地址
    • params 作为参数关键词,仅能用于函数的最后一个参数

        继承

    • 无法阻止子类覆盖基类同签名方法
    • 继承关系是子类的同签名方法先查找,再查找其基类的
    • base关键字被C#用于在子类中调用基类函数、变量
    • 继承关系不可逆转
    • 除了构造函数、析构函数,子类继承了基类的一些
    • 自定义类默认继承自Object类型,但是C#的这些类型不能被继承:System.ValueType, System.Enum, System.Delegate, System.Array, etc.
    • C#不支持从多类继承
    • C#不支持循环继承
    • 子类对象可直接赋值给基类,反之需要强转

        Virtual

    • 在C#中,子类对象可赋值给一个基类对象;相反需要强转。
    • override关键字用于子类重写同签名的基类virtual函数
    • 用new和override可重写基类virtual的同签名函数
    • virtual修饰符的函数,只能在运行时决定是否被执行
    • 函数未用virtual修饰,则在编译期即可决定是否被调用

        抽象类和抽象方法

    • 无法使用new来实例化abstract 抽象类
    • abstract 抽象类可以有子类,其子类实现抽象方法后,可被new实例化对象
    • 如声明了abstract 的函数,则必须声明abstract 的类
    • 当override抽象基类,无法修改基类函数的签名
    • abstract函数,无法同时添加static、virtual关键字
    • abstract 类无法被声明为sealed、static类
  • 相关阅读:
    python基础易错题
    经典案例题2
    经典案例题1
    Http和Https的区别
    爬虫过程中需要注意的问题
    [转]项目规模估计方法介绍
    [转]23种设计模式总结
    [转]分布式session的几种实现方式
    [转]Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
    [转]【Linux】Linux 目录结构
  • 原文地址:https://www.cnblogs.com/xijianyao/p/4490487.html
Copyright © 2011-2022 走看看