java - 在 Java 中实现接口(interface)时降低可见性

标签 java oop interface

我想设计 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/

相关文章:

Python:与 OOP 中的类、属性和方法混淆

c# - 我应该在继承链中包含所有接口(interface)吗?

java - JEdi​​torPane 正在删除 CSS 字体样式

java - 如何访问内部嵌套方法中的外部变量?

python - 自定义类管理器的方法中如何获取之前查询返回的数据?

c++ - C++中的工厂模式链接器错误 undefined reference

java - 使用 apache commons 编码

Java - 从 map 中的列表中检索单个值

java 用附加方法实现接口(interface)

c# - 如何在 C# 中确保对象的类型等于此?