zoukankan      html  css  js  c++  java
  • C#:重载、重写、隐藏的定义

    1. 继承的类型:

    • 实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。
    • 借口继承:表示一个类型之继承了函数的签名,没有继承任何实现代码。

    2. 多重继承

    C#不支持多重实现继承,允许类型派生于多个接口。

    3. 虚方法

    把一个基类函数声明为virtual,该函数就可以在派生类中重写。

    4. 隐藏方法

    如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual和override,派生类方法就会隐藏基类方法。

    C#中使用关键字new声明我们要隐藏一个方法:

    class MyDerivedClass : HisBaseClass
    {
    public new int MyGroovyMethod()
    {
    // some groovy implementation
    return 0;
    }
    }

    重载、重写、隐藏的定义:

    • 重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法参数列表不同。通过传递不同的参数来决定调用哪一个方法。
    • 重写:继承时发生,在子类中重新定义父类中的方法。例如:基类方法声明为virtual方法,派生类中使用override声明此方法的重写。
    • 隐藏:基类方法不做声明(默认为非虚方法),在派生类中使用new声明方法的隐藏

    重载时,根据参数选择调用方法;

    重写时,访问父类、子类皆调用子类的重写方法;

    隐藏式,访问父类调用父类的方法,访问子类则调用子类的方法。

    比如父类A,有个方法标记为virtual,a(){}   子类B继承A,也声明一个方法a(){}   如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.

    其他关于virtual和override修饰符的重要信息:

    • 重写和被重写的方法必须有相同的可访问性。
    • 不能重写static 方法或非虚方法
    • 方法、属性、索引以及事件,都可以被声明为virtual和override
  • 相关阅读:
    linux权限补充:rwt rwT rws rwS 特殊权限
    关于Linux操作系统下文件特殊权限的解释
    Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 复数四则运算
  • 原文地址:https://www.cnblogs.com/LilianChen/p/2939164.html
Copyright © 2011-2022 走看看