用sealed修饰的类有什么特点,sealedup
内容导航:
一、使用sealed,virtual,override,abstract修饰的类
1.
sealed——“断子绝孙”密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。即:密封类不会有子类,所以是“断子绝孙”。2.
new——“你是我的,我是我的”new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。即:好比是不用祖宗的东西,而是用自己创造(new)的东西。3.
virtual——“为了子孙后代”virtual关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。在默认情况下,方式是非虚拟的。非虚方法不能重写。不能将virtual修饰符与一下修饰符一起使用:static、abstract和override。除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。在静态属性上使用virtual修饰符是错误的。通过override修饰符的属性声明,在派生类中重写虚拟继承属性。即:virtual是为了让子孙后代可以实现各自的梦想而做的。4.
abstract——“我是上帝”abstract修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用abstract修饰符,以指示该类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。抽象类具有以下特性:抽象类不能实例化。抽象类可以包含抽象方法和抽象访问器。不能用sealed修饰符修改抽象类,这意味着该类不能被继承。从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。在方法或属性声明中使用abstract修饰符以指示此方法或属性不包含实现。抽象方法具有以下特性:抽象方法是隐式的virtual方法。只允许在抽象类使用抽象方法声明。抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在结束后没有花括号。实现由override方法提供,它是非抽象类的成员。在抽象方法声明中使用static或virtual修饰符是错误的。除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。在静态属性上使用abstract修饰符是错误的。在派生类中,通过包括使用override修饰符的属性声明可以重写抽象的基础属性。即:abstract是一种抽象,好比上帝,是人们对神的抽象,看似什么都能干,其实什么都干不了。5.
override——“一手遮天”使用override修饰符来修改方法、属性、索引器或事件。主要是提供派生类对基类方法的新实现。覆盖上面abstract、virtual两种关键字修饰的成员。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。重写基方法必须是虚拟的、抽象或重写的。不能重写非虚方法或静态方法。不能使用下列修饰符修改重写方法:new、static、virtual和abstract。重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且重写属性必须是虚拟的、抽象的或重写的。即:override好比不但不用祖宗的那套,而且还自己创一套新功夫代替祖宗那套。
二、用sealed修饰的类有什么特点
用sealed修饰的类有什么特点sealed 修饰符用于防止从所修饰的类派生出其它类。
如果一个密封类被指定为其他类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。
具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
sealed 修饰符用于防止从所修饰的类派生出其它类。
如果一个密封类被指定为其他类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。
具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
C#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题。
密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承。
如果试图将一个密封类作为其它类的基类,C#将提示出错。
理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。
sealed(C# 参考) sealed 修饰符可以应用于类、实例方法和属性。
密封类不能被继承。
密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。
当应用于方法或属性时,sealed 修饰符必须始终与 override(C# 参考) [ /zh-
cn/library/ebca9ah3(VS.80).aspx ] 一起使用。
三、抽象类是指没有说明对象的类吗
抽象类不是指没有说明对象的类
概念理解 编辑
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
c#中的抽象类的特征 抽象类具有以下特性:抽象类不能实例化。抽象类可以包含抽象方法和抽象访问器。不能用 sealed
修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract
修饰符要求对类进行继承。从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
四、修饰类化妆品有哪些
答:修饰类化妆品,在化妆修饰时使用,如唇膏、指甲油、香粉
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/125284.html