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
  • 相关阅读:
    局域网中CSMA/CD协议的应用
    RIP及距离向量算法
    网桥与以太网交换机
    C++ String
    C++ Input & Output
    Shell Script(1)----variable compare
    python--内建函数(1)
    python--data type
    python--compile
    python--help
  • 原文地址:https://www.cnblogs.com/LilianChen/p/2939164.html
Copyright © 2011-2022 走看看