我有些想起我们小学学的文书格式。比如,请假条有一个固定格式: 起行是称呼,然后是正文,最后是落款和日期。 至于向谁请假,请假内容是什么,谁请的假都没有指定,因为那必须到最终请假人来决定。 这就好比请假条的固定格式就是接口,真正具体的请假条就是实现的类。 当然这个比喻不是太恰当,因为这个比喻最恰当的是来比喻类和实例更贴切。 再举一个例子,所有人都知道,毛笔是用来写字的,扫帚是来扫地的,但又有谁规定了扫帚就不能写字了? 我现在需要一个只要能写字都可以的工具。 比如WriteSomthing(Tool) 于是就有一个问题了,这个Tool到底是毛笔呢还是扫帚??? 显然毛笔和扫帚不是一类的东西,也不太好用继承的关系来做,如果可以的话,到底是毛笔继承扫帚还是扫帚继承毛笔呢?抑或是扫帚和毛笔共同继承一个有毛的东西?那没毛的扫帚咋办呢? 因此,最好的办法就是提取他们共有的功能出来——写作为一个合约,这个合约只是规定你需要有这个功能,至于你怎么去实现这个功能我不管,但是你的提供这个功能,那么这个合约就叫接口了,因此可以设计一个IWrite的接口,这个接口规定必须实现的一个功能是Write。 现在好了,Tool就可以指定为IWrite,意思就是只要实现了IWrite指定的功能一切工具管你是毛笔、扫帚还是树枝石头啥的,都可以拿来用。 因此WriteSomething(IWrite Tool)就是我们想要的东西 不过还有需要注意的一点,传递进来的参数必须是实现了IWrite功能的任意类的实例。 我不知道这样说有没有人明白?
62,243
社区成员
668,998
社区内容
加载中
.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。
希望和大家一起共同营造一个活跃、友好的社区氛围。
试试用AI创作助手写篇文章吧