抽象类的特性(在C#中,类的多态与抽象类区别在哪里)
本文目录
在C#中,类的多态与抽象类区别在哪里
类的多态主要表现在类的继承。通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。C#中的每种类型都是多态的。类型可用作它们自己的类型或用作Object实例,因为任何类型都自动将Object当作基类型。多态性不仅对派生类很重要,对基类也很重要。任何情况下,使用基类实际上都可能是在使用已强制转换为基类类型的派生类对象。基类的设计者可以预测到其基类中可能会在派生类中发生更改的方面。抽象类的特点:不能直接被实例化;抽象类中必定包含抽象成员;抽象类不能被密封;一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。
使用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好比不但不用祖宗的那套,而且还自己创一套新功夫代替祖宗那套。
下列描述中,( )不是抽象类的特性
B,抽象类不能被创建,因此不能定义指向该抽象类的指针或引用,只能用基类的指针去定义指向继承类的指针和引用
抽象类与非抽象类有什么区别
抽象类不能实例化,它的方法经常是部分实现或完全不实现.抽象方法只能放在抽象类里面.
更多文章:
iphone7 home键(iphone7的home键怎么设置)
2024年7月15日 12:13
svchost exe(任务管理器svchost.exe 多是怎么回事)
2024年6月21日 11:55
三星I9300国际版,联通版移动版,电信版到底有什么区别?三星I9300手机怎么样
2024年6月24日 22:47
手机版秒破qq密码(qq密码破解大师免费版v2.1.21安卓最好用吗)
2024年4月19日 08:45
yy粉丝网是什么网站?爱Q粉丝网是干什么的站长是谁知道的说下
2023年7月5日 00:00
中兴手机U232突然出现耳机模式怎么办呀?中兴手机u232怎么样
2024年7月6日 14:52