我想设计类 A 实现接口 C 并降低方法(在 C 中声明)的可见性,以使其免受外部世界的影响,将类 A 中实现的接口中的方法之一设为私有(降低类 A 中的可见性) 。出于安全原因我必须这样做,我该怎么做,有解决方法吗?我们确实知道,默认情况下,该接口具有公共成员。但我没有选择,有人可以帮助我吗?提前致谢。
--
因此,没有办法让类实现接口方法并将其设为私有。实现任何接口方法的所有类都将始终具有公共方法?
不,您无法降低接口中方法的可见性。如果有人写下以下内容,您会期望发生什么:
C foo = new A();
foo.methodDeclaredPrivateInA();
?就编译器而言,所有涉及实现的内容C
有权调用其中的任何方法 - 这就是里氏替换原理的全部内容。
如果您不想实现整个公共接口,请不要实现它 - 或者在绝对必须的情况下抛出异常。
还值得注意的是,源代码中提供的可访问性很少是好的security措施。如果您的类在虚拟机中运行,而虚拟机又可以确定自己的权限,则任何人都可以通过反射使成员可见。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)