Java 接口(interface)的可见性降低,只是没有

标签 java interface class-visibility

<分区>

Possible Duplicate:
Reduce visibility when implementing interface in Java

我肯定遗漏了一些明显的东西,但我得到了:

Cannot reduce the visibility of the inherited method

我不知道怎么办。这是我的界面:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

这是我的实现:

public class Stupid implements QueryBuilderPart {
    @Override
    StringBuilder toStringBuilder() {
        return null;
    }
}

类和实现都在同一个包中。有什么想法吗?

最佳答案

默认接口(interface)的方法是public,但您将其降低为默认可见性,即包级可见性。

所以下面两段代码是一样的:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

interface QueryBuilderPart {
    public abstract StringBuilder toStringBuilder();
}

注意接口(interface)的方法也是抽象

所以你应该这样做:

public class Stupid implements QueryBuilderPart {
    @Override
    public StringBuilder toStringBuilder() {
        return null;
    }
}

关于Java 接口(interface)的可见性降低,只是没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231743/

相关文章:

c# - 类实例创建限制

java - 为什么 java.io.Bits 不公开?

java - 使用非 Spring Groovy 类中的服务

java - 制作一个 Android 应用程序,其中启动图标充当链接

用于接口(interface)和实现接口(interface)的类的 PhpDoc - 区别

oop - 什么时候应该使用接口(interface)?

java - 如何从Excel文件中读取日期

java - 当 pdf 生成失败时,向 portlet 资源响应提供错误页面

Java为什么接口(interface)扩展接口(interface)

Kotlin:可见性修饰符更改匿名对象的类型