c#中abstract、override、new、virtual、sealed使用和示例
来源:互联网 发布:手机淘宝分享爱逛街 编辑:程序博客网 时间:2024/04/28 17:22
abstract
修饰类名为抽象类,修饰方法为抽象方法。如果一个类为抽象类,则这个类智能是其他某个类的基类。抽象方法在抽象类中没有函数体。抽象类中的抽象方法是没有方法体的,继承其的子类必须实现抽象类的抽象方法。
抽象类有如下特征:
- 抽象类不能实例化
- 抽象类的派生类必须实现所有抽象方法
- 抽象类中的抽象方法是没有方法体的,继承其的子类必须实现抽象类的抽象方法
抽象方法:
- 抽象方法是隐式的虚方法
- 只允许在抽象类中使用抽象方法声明
- 抽象方法在抽象类中没有方法体
- 在抽象方法声明中,不能使用static或者virtual修饰符
override
override关键字提供派生类对基类方法的新的实现,重写的基类方法必须和基类的方法有着相同的签名(函数名、返回值、参数列表相同)。
override关键字不可以重写基类非virtual修饰的方法和static修饰的静态方法。
派生类的override方法和基类的virtual方法必须有相同的访问权限。不能用修饰符new、static、virtual或者abstract修饰override方法。
派生类的override方法重写的基类方法必须是virtual、abstract或者override的。
new
c#中,new的关键字主要有三个功能:
- 作为运算符用来创建类的一个对象。 Class obj = new Class();
- 作为修饰符。
- 用于在泛型声明中约束可能用作类型参数的参数类型。(这个不太清楚)
在这里主要介绍第2个功能,作为修饰符的作用。
new声明的方法,当使用子类的类型来调用的时候,它会运行子类的函数,而如果类型是基类的话,被隐藏的基类函数会被调用。
而子类中函数使用override的时候,则当使用子类的类型来调用的是,它会运行子类的函数,类型是基类的时候,仍会调用子类函数。
如下例:
virtual
virtual 关键字允许在派生类中重写这些对象。默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。virtual关键字又是和override紧密不可分的,如果要实现virtual方法就必须要使用override或new关键字(上文已经指出new和override产生的机理不同)。
sealed
当对一个类应用sealed修饰符时,此修饰符会阻止其他类从该类继承。
sealed 方法必须与override连用,也就是说实现sealed方法的类的父类必须实现了此方法。
sealed关键字有两个作用:
1 密封类不能被继承。
2 密封方法重写基类中的方法,但其本身不能在任何派生类中进一步重写
sealed实例:
整体的一个简单实例如下:
0 0
- c#中abstract、override、new、virtual、sealed使用和示例
- c#中abstract、override、new、virtual、sealed使用和示例
- c#中abstract、override、new、virtual、sealed使用和示例
- C# 关键字 abstract, virtual, override, sealed, new
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- new virtual abstract sealed override
- c#关键词 virtual、override、new、abstract、sealed的用法
- C# new,Virtual,abstract,sealed,Override的簡單理解
- C#关键字sealed override abstract virtual new总结
- C#继承之base,virtual,override,abstract,new,sealed关键字
- c#的new、abstract、virtual、override,sealed关键字区别
- (十三)sealed、new、virtual、abstract 和 override
- sealed、new、virtual、abstract与override 总结
- sealed、new、virtual、abstract与override 总结
- sealed,new,virtual,abstract与override
- Modifiers: virtual, override, new, abstract, sealed, internal
- c#中override virtual static abstract sealed 的作用
- c#中override virtual static abstract sealed 的作用
- DexHunter--2
- Linux下简单基本操作
- mybatis3中,数据库字段为空,结果集不返回字段名。【转】
- 高斯噪声、高斯白噪声解析
- SqlServer触发器的一个例子
- c#中abstract、override、new、virtual、sealed使用和示例
- javascript去除字符串的空格和回车
- Nordic定时器配置(Timer模式)
- java.util包中一些的类
- 设置开机自启动
- magento 日常
- Android Studio lint
- android shape标签详解(二)
- Maven和Gradle对比