我想设计 A 类实现接口(interface) C 并减少方法(在 C 中声明)的可见性以使其免受外部世界的影响,将 A 类中实现的接口(interface)中的方法之一设为私有(private)(减少在 C 中的可见性) A类)。出于安全原因,我必须这样做,我该怎么做,有没有解决方法。我们知道默认情况下,接口(interface)有公共(public)成员。但是我别无选择,有人可以帮助我。提前致谢。
-- 所以,没有办法让一个类从接口(interface)实现方法并将其设为私有(private)。所有实现任何接口(interface)方法的类都将始终具有公共(public)方法吗?
最佳答案
不,您不能降低接口(interface)中方法的可见性。如果有人写道:
C foo = new A();
foo.methodDeclaredPrivateInA();
?就编译器而言,所有引用 C
实现的东西都有权调用其中的任何方法 - 这就是 Liskov 的替换原则。
如果您不想实现整个公共(public)接口(interface),请不要实现它 - 或者在绝对必要时抛出异常。
同样值得注意的是,源代码中提供的可访问性很少是一个好的安全措施。如果您的类在 VM 中运行,而 VM 又可以确定自己的权限,则任何人都可以通过反射使成员可见。
关于java - 在 Java 中实现接口(interface)时降低可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588015/