【发布时间】:2011-03-13 03:38:03
【问题描述】:
默认情况下,接口的所有成员都是公共的。但是我的接口中有一些属性我想用作实现我的接口的某些子类的私有成员。这是可以并且已经完成的事情还是我在这里的基础。这些天我正在努力在我的架构中使用更多接口,所以我还不是很精通。
【问题讨论】:
-
你考虑过使用显式接口实现吗?
-
使用接口的抽象类状态!
默认情况下,接口的所有成员都是公共的。但是我的接口中有一些属性我想用作实现我的接口的某些子类的私有成员。这是可以并且已经完成的事情还是我在这里的基础。这些天我正在努力在我的架构中使用更多接口,所以我还不是很精通。
【问题讨论】:
接口的意义在于它们提供了一个契约,其他对象可以使用该契约与您的对象进行通信。如果您将接口中声明为public 的成员更改为private,那么您没有履行合同- 另一个对象可能需要读取该属性/调用该方法,您必须允许他们这样做。
接口永远不会有private 成员,因为接口用于两个对象之间的“接口”。你的内部private 成员对它没有影响,只要你坚持你的合同结束。
【讨论】:
继续你的问题,以及你对“子类”这个词的使用,我认为你还没有完全理解接口。
我知道您可能已经听过这句话一百万次了,但是,接口描述了对象的作用,而类描述了它的作用方式。一个类 IMPLEMENTS,一个接口,它不继承自它。
因此,如果您愿意,可以为您的基类或子类提供一个接口,但您的问题让我认为您正在考虑的是基类(抽象类),而不是接口。
这有意义吗?
【讨论】:
由于接口没有访问修饰符,如果您仍然希望您的方法在实现该接口的类中是私有的,您可以显式地实现该接口。
这样你的类方法将是私有的。
【讨论】:
您必须完全了解接口是什么。事实上,这只是外界对班级成员的期望的描述。它不创建成员,它只是通知指定的类有指定的方法在公共范围内使用。因此,正如您在界面中看到的那样,您只能描述公共成员。
另一方面,如果您想声明一些固定或虚拟的私有成员,您可以使用带有抽象基类的经典继承。在这种情况下,您会将要在子类中实现的所有方法设为抽象,并实现您要在基类中定义的方法。
希望这会有所帮助.. 问候
【讨论】:
接口仅适用于公共访问。在内部,对象通过接口引用自己是很奇怪的。
如果您想要强制实现的私有变量,您想要使用抽象类,并将它们标记为受保护。
【讨论】:
想一想 - 你就会明白这是不可能的:
接口就像一个联系人。接口的所有公共字段都是联系人的一部分。
因此,您不能将它们隐藏在子类中...
如果有人将您的类对象向上转换为接口的类型会怎样?
您可能想要更改您的设计 - 可能会将您的界面分成两个界面? 或者和接口和一个抽象类?我们需要了解更多细节...
【讨论】: