在c#中实现多态,如何做到最好?
第一个问题在这里,所以希望你们都会轻轻地对我说话!
在过去的几天里,我一直在阅读关于多态的非常多的内容,并试图将它应用到我在c#中所做的事情,似乎有几种不同的方法来实现它.我希望我已经掌握了这个,但即使我没有澄清,我也很高兴. 从我所看到的,我有3个选择: >我可以从基地继承 从我所看到的,如果我不需要基础中的任何实现逻辑,那么一个接口给了我最大的灵活性(因为我当然不限制我自己的多重继承等),但如果我需要基础为了能够在派生类正在做的事情之上做一些事情,那么使用1或2将是更好的解决方案? 感谢有关这些人的任何意见 – 本周末我已经阅读了这么多内容,无论是在本网站还是其他地方,我认为我现在理解这些方法,但我只是想以语言特定的方式澄清如果我在右边跟踪.希望我也正确地标记了这一点. 干杯, 解决方法
界面提供最多的抽象;您不依赖于任何特定的实现(如果由于其他原因,实现必须具有不同的基类,则非常有用).
对于真正的多态性,虚拟是必须的;多态性最常与类型子类化相关联…… 你当然可以混合两者: public interface IFoo { void Bar(); } class Foo : IFoo { public virtual void Bar() {...} } class Foo2 : Foo { public override ... } 摘要是一个单独的问题;抽象的选择实际上是:它可以由基类理智地定义吗?如果没有默认实现,则它必须是抽象的. 当存在许多常见的实现细节时,常见的基类可能很有用,并且纯粹通过接口复制是没有意义的;但有趣的是 – 如果实现永远不会因每个实现而有所不同,那么扩展方法提供了一种在接口上公开它的有用方法(这样每个实现都不必这样做): public interface IFoo { void Bar(); } public static class FooExtensions { // just a silly example... public static bool TryBar(this IFoo foo) { try { foo.Bar(); return true; } catch { return false; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |