实现接口但将成员更改为私有

时间:2010-07-08 04:08:45

标签: c# interface

默认情况下,接口的所有成员都是公共的。但是我的界面中有一些属性我想用作实现我的界面的一些子类的私有成员。这是可以而且已经完成的事情,还是我在这里的基础。我正在努力在我的架构中使用更多接口,所以我还不是那么精通。

6 个答案:

答案 0 :(得分:12)

接口的意义在于它们提供了一个其他对象可以用来与对象通信的契约。如果您将接口中声明为public的成员更改为private,那么您没有履行合同 - 另一个对象可能需要读取该属性/调用该方法,并且您必须允许它们到。

接口永远不会有private个成员,因为接口用于两个对象之间的“接口”。只要你拖延了合同,你的内部private成员就无所谓。

答案 1 :(得分:2)

继续你的问题,以及你对“子类”这个词的使用,我认为你还没有完全理解接口。

我知道你可能已经听过这一百万次了,但是,一个接口描述了一个对象是什么,一个类是如何做到的。一个类IMPLEMENTS,一个接口,它不会从中继承。

所以,如果你愿意,可以为你的基类或你的SubClasses设置一个接口,但你的问题让我觉得你在考虑一个基类(抽象类),而不是一个接口。

这有意义吗?

答案 2 :(得分:2)

由于接口没有Access Modifier,如果您仍然希望您的方法在实现该接口的类中是私有的,则可以实现该接口EXPLICITLY。

这样你的班级方法就是私人的。

答案 3 :(得分:1)

您必须完全了解接口是什么。事实上,只有外部世界对阶级成员的期望才有描述。它不创建成员,它只是通知指定的类具有在公共范围中使用的指定方法。因此,正如您可以通过界面看到的那样,您只能描述公共成员。

另一方面,如果要声明一些固定或虚拟的私有成员,可以将经典继承与抽象基类一起使用。在这种情况下,您将要在子类中实现的所有方法都作为抽象,并实现您希望在基类中定义的方法。

希望这会有所帮助..问候

答案 4 :(得分:1)

接口仅适用于公共访问。在内部,对象通过接口引用自身会很奇怪。

如果您想要强制执行的私有变量,您希望使用抽象类,并将它们标记为受保护。

答案 5 :(得分:0)

稍微考虑一下 - 你明白这不可能做到:

接口就像一个联系人。界面的所有公共字段都是联系人的一部分。

所以,你不能把它们隐藏在子类中......如果有人要将你的类对象转换为接口的类型,会发生什么?

您可能想要更改您的设计 - 可能将您的界面拆分为两个界面? 或者接口和抽象类?我们需要更多细节才能知道...