接口的目的是隐藏信息吗?

RoR*_*RoR 1 c# oop information-hiding interface

鉴于接口也用于帮助隐藏信息,仅向用户提供允许使用的可能方法的子集,并且,假设我有一个Person类和接口IPerson.

现在在主,我被允许做

IPerson testy = new Person();
Run Code Online (Sandbox Code Playgroud)

要么

Person testy = new Person();
Run Code Online (Sandbox Code Playgroud)

所以我真的不限制使用Person了.那么界面如何真正隐藏数据呢?

Pet*_*old 5

接口本身并不用于"隐藏"任何东西.它用于在调用者和实现之间建立合同.该合同承诺"这些方法和属性将在这里,它们不会改变".

接口还开启了改变实现的可能性,而无需调用者处理它.这在去耦设计中至关重要.

你的问题意味着你main 知道关于Person班级的一切.你实际得到的是耦合代码,这是更难测试."修理"这个你必须改变你的心态,并认为:main根本不想知道的一切Person,这是只关心IPerson,只需要接口.不多也不少.