new,virtual,abstract,sealed,override的区别

微笑、不失礼 提交于 2020-01-03 23:12:55
    new

    new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。也就说在使用派生类的方法是调用的方法是New关键字新定义出来的方法,而不是基类的方法。
   在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

    Virtual

    Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。
   Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new关键字(new和override产生的机理不同)。

    abstract

        在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。抽象类不能实例化。
        抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。

    sealed

        密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。密封类不能被继承。
        当应用于方法或属性时,sealed修饰符必须始终与override一起使用。

    Override

    Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!