当前位置: 首页 > 编程语言 > C#

抽象类的特性分享

时间:2023-04-11 02:40:26 C#

抽象类的特性我想知道是什么让一个类叫做抽象类。我相信abstract关键字肯定会创建一个类,但是如果把关键字去掉,那么我们就可以创建那个类的实例了。也就是说,抽象类的特点是什么。提前致谢。-Harsha与纯粹的实现类不同,抽象类不形成现实世界中的具体对象。抽象,顾名思义,它们持有/定义了需要在所有相关对象中独立重用/定义的相关对象的共同行为。以鸟类为例。如果你正在写一个与鸟类有关的程序,那么你首先会得到一个抽象基类Bird,每只鸟都是从抽象基类Bird派生出来的。请注意,抽象类BIRD并不表示具体的现实世界对象,而是相关对象,即鸟!让我们从类图开始,然后是一些代码。替代文本http://ruchitsurati.net/files/birds.png公共抽象类Bird{protectedstringName=string.Empty;publicBird(stringname){this.Name=name;}publicvirtualvoidFly(){Console.WriteLine(string.Format("{0}isflying.",this.Name));}publicvirtualvoidRun(){Console.WriteLine(string.Format("{0}无法运行。",this.Name));}}publicclassParrot:Bird{publicParrot():base("parrot"){}}publicclassSparrow:Bird{publicSparrow():base("sparrow"){}}publicclassPenguin:Bird{公共企鹅():base("penguin"){}publicoverridevoidFly(){Console.WriteLine(string.Format("{0}不会飞。有些鸟不会飞。",this.Name));}publicoverridevoidRun(){Console.WriteLine(string.Format("{0}正在运行。有些鸟确实在运行。",this.Name));}}classProgram{staticvoidMain(string[]args){Parrotp=newParrot();麻雀s=new麻雀();企鹅pe=newPenguin();列出鸟类=newList();鸟类广告d(p);birds.Add(s);birds.Add(pe);foreach(Birdbirdinbirds){bird.Fly();鸟.Run();}控制台.ReadLine();}}abstractclass有一个特殊的特性:你不能创建类的实例抽象类被设计为用作其他抽象类和非抽象类的基类。一个要抽象的类要有任何意义,它必须有一个需要实现的抽象成员,否则它是无关紧要的(除非你打算阻止实例化),你应该删除它。它可能有一个继承者需要声明的抽象属性,比如这个publicabstractintID{get;}或者它必须实现的方法:publicabstractvoidDoSomething();如果类本身从不实例化,但你需要的不仅仅是一个接口,比如一个基本属性,而且你想稍后使用它,你可以使用这个:((MyAbstractClass)obj).DoSomething();//所有实现这个抽象类的继承者有两个相关的目的:你可以把一个抽象成员放到一个类中你不能创建一个抽象类的实例抽象类的主要目的是作为子类的基类,提供一些通用功能,但至少是后代必须实现的一组通用方法。例如,您可以创建一个带有抽象方法Eat的抽象类Fruit。由于你实际上不能吃“水果”,你需要吃特定类型的水果,这个类是抽象的,你永远不会在野外看到标有“水果”的物体。相反,您会看到Apple、Banana、Orange等类型的对象,它们是Fruit的后代并且具有Eat的实际实现。除了最上面的两件事之外,抽象类没有什么特别之处。我认为还没有人说过这一点,但我相信抽象类的显着特征是:编码人员知道如何实现该类的X%,以及应该如何实现该类的(100-X)%,但不能。这就是抽象类的区别。接口描述了类是如何实现的,但不向实现者提供任何代码或支持。具有虚方法的基类提供继承者可以覆盖的默认实现。它只是一个抽象类,可以提供部分实现,但不能提供完整的实现。以上就是《C#学习教程:抽象类的特点》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: