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

继承或枚举共享

时间:2023-04-10 20:57:21 C#

继承或枚举}publicstringAuthor{get;set;}publicintNumberOfPages{get;set;}}publicclassEncyclopedie:Book{}publicclassNovel:Book{}或更好地使用:classBook{publicBookTypeType{get;set;}publicstringName{get;set;}publicstringAuthor{get;set;}publicintNumberOfPages{get;set;}}publicenumBookType{Encyclopedie=0,Novel=1,...}如果不同类型有显着差异(如何处理它们以及如何处理它们),使用继承。也就是说,如果你打算使用多态性,你应该使用继承。如果您只需要一种方法来区分不同类型的书籍,请使用枚举。在真正的面向对象系统中,对象的类型对客户端是透明的。所以处理书籍的代码不应该知道书籍的类型,而只是调用书籍的方法。因此,如果您需要在Book中实现不同的行为以响应方法调用,请扩展Book并重写它的一些方法。如果你不这样做,那就不要。给定子类的空主体,它的行为方式似乎与Books相同。所以你只是用一些额外的数据给书贴上标签——百科全书和小说之间的区别对这本书来说并不比精装本或软皮本或大字版或标准版更重要——客户可能会以不同的方式使用它们,并且每本书都必须是大号印刷本还是标准印刷本,但这些都是书的属性,而不是本质区别。我不必为这本书使用枚举,因为你可能想添加更多数据——我要么使用松散的标签系统,这样你就可以用一组种类来标记一本书——这样你就有了一个书标签对于{'children's','ornithological','encyclopaedia',}-或允许角色中的结构-从而在需要时创建“儿童鸟类百科全书”,但没有固定的枚举。我会说第二个会更好,因为您并没有真正扩展百科全书中的书籍类,您不需要为一种书籍类型提供??额外的属性或功能。“最佳”是主观的,在很大程度上取决于班级/模型的目的。你的目标是什么?你想达到什么目的?在这一点上,我最多可以说,当派生类具有一些相当独特的属性时,继承是有用的——比如Encyclopedie具有解释它实际上是哪种类型的Encyclopedie的属性,而这些属性无论如何都不是小说的一部分。这真的取决于。如果需要使用多态,第一种方案更好。从我个人的角度来看,我更喜欢使用继承。如果不同类型的书籍具有不同的属性,则应显式使用继承模型。这也允许多态性,如果它们都具有相同的属性通常会更好,那么您也可以使用枚举。但这完全取决于应用程序。我认为你应该根据这本书的“目的”来做出这个选择。如果这本书不需要任何额外的东西(方法和属性......)枚举就足够了。如果你必须为每本书创建一个共同的行为,并为每本书类型创建更具体的行为,你显然需要继承(抽象类“Book”和具体类)。使用枚举来“键入”您的对象听起来有点“老式C风格”编程。我的意思是,没关系,但是当继承可用时(您使用的是C#),它通常是更好的选择。枚举通常会引入一些“麻烦”,例如序列化/反序列化数据时:如果旧版本的应用程序使用BookType具有未知项目的“较新”场景怎么办?(向后/向前兼容性可能是您的应用程序的要求)当然,您可以使用“if-then-else”来处理这个问题,但继承对我来说似乎是一个更简洁的选择。再见!以上就是C#学习教程的全部内容:继承或枚举分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: