java - 在抽象类中实现时降低 java 接口(interface)的可见性

标签 java oop

我有如下三个接口(interface)

interface CFL extends PowerSaver, LightingDevice{
    void showLifeTime();
    void getBrand();
}

interface PowerSaver {
    void showEcoRate();
}

interface LightingDevice {
    void doLight();
}

然后我创建一个名为 Philips 的抽象类来实现 CFL

public abstract class Philips implements CFL{
    void showLifeTime(){}; // Compiler says Cannot reduce the visibility of the inherited method from CFL.
    void showEcoRate(){};  // Compiler says Cannot reduce the visibility of the inherited method from CFL.
}

我的问题是为什么它说我无法降低从 CFL 继承的方法的可见性。而我还没有减少它?

最佳答案

接口(interface)实现必须是public

要了解错误,请参阅 spec :

Every method declaration in the body of an interface is implicitly public.

因此,您实际上是在重写(或者在本例中是实现)public 方法。

关于java - 在抽象类中实现时降低 java 接口(interface)的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584802/

相关文章:

Python将对象属性写入文件

java - 在链表数组中找到最长的链表

java - 安全异常 : No persistable permission grants found for uri from ACTION_IMAGE_CAPTURE

java - 子类化或实现接口(interface)

javascript - Backbone.js 继承问题

java - 场景应该删除图层还是图层自行删除?

java - 尝试打开 jasper 报告时从 java 中的 InputStream 加载对象时出错

java - web.xml 安全约束配置不考虑 URL 查询字符串

java - 队列一旦消耗就不会被删除?

c# - 在运行时动态创建按钮并存储,在 C# 中永久检索它