![]() |
1
40
通过从类继承,可以通过子类公开基类的功能。
不能通过实现具有更高可见性的子类来违反父类的保护级别。 如果基类真的要被公共子类使用,那么还需要将父类公开。 另一种选择是将“父”保持在内部,使其非抽象,并使用它来组成子类,并使用接口强制类实现功能:
|
![]() |
2
44
更新:这个问题 the subject of my blog on November 13th of 2012 . 更多关于这个问题的想法,请参阅。谢谢你的好问题!
这是原C#设计师的设计决定。不幸的是,我现在不在我的办公桌上——我要休息几天来度过漫长的周末——所以我面前没有1999年的语言设计笔记。如果我回来后想一想,我会浏览一下,看看这个决定是否有道理。 . 我尽量避免将继承用作 . 正如其他人所提到的,如果您想要表示的是“这个类与其他类共享实现机制”,那么最好选择组合而不是继承。 |
![]() |
3
17
我认为你能做的最接近的事情就是阻止其他程序集创建抽象类,方法是将它的构造函数设置为内部的 MSDN :
EditorBrowsableAttribute
或者将基类放在嵌套的命名空间中,例如
|
![]() |
4
4
我认为你在这里混淆视听,事实上,C是罪魁祸首(还有之前的Java)。
但为了创作,我们需要自己动手:
trait (pdf) ,这将使组合达到与继承相同的可用性级别。 有关于 traits in C# (pdf) ,它看起来像这样:
尽管我想看看 another model (perl6角色的角色)。 更新: 作为旁注,Oxygene语言 a feature 使您可以将接口的所有成员委派给实现该接口的成员属性:
另一个更新: 我已经开始在C语言中实现这个自动合成的概念:看看 NRoles . |
![]() |
5
3
|
![]() |
Eduardo · Android Emulator内部存储在哪里 11 年前 |