我在面试中被问到一个关于接口(interface)的问题。我不确定这是否真的可能。请看下面的问题。
有3个接口(interface)A
,B
,C
。 A
继承自接口(interface) B
和 C
:
public interface A : B,C
{
}
我们必须确保该接口(interface)的用户不能直接或独立地使用B
和C
,而只能使用A
.
我可以想到以下场景:
- 制作
B
和C
内部接口(interface)。但我没有看到任何实际用途,因为我可以直接在A
本身中定义所有成员。 - 使
B
和C
成为私有(private)接口(interface)。但是我怎样才能做到呢?此外,我在下面的 MSDN 链接中看到B
和C
必须至少与 A 一样可访问:http://msdn.microsoft.com/en-us/library/aa664578%28v=VS.71%29.aspx .
有什么办法可以做到这一点还是问题本身是错误的?
最佳答案
您所要求的将违反 Liskov Substitution Principle .
如果 A
以这种方式实现了 B
,它应该始终可以直接用作 B
。试图阻止这种情况将违反面向对象设计的主要原则之一。
我怀疑面试官是想看看你是否理解这个核心概念,并会从一开始就说“这是错误的,因为......”。
关于c# - 界面及其可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840914/