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

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

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

接口永远不会有private成员,因为接口用于在两个对象之间“接口”。 只要您坚持合同结束,您的内部private会员就无所谓。

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

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

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

那有意义吗?

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

这样,您的类方法将是Private。

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

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

希望这有帮助..问候

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

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

想一想 – 你明白这不可能做到:

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

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

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