【问题标题】:Java interfaces reduction in visibility, only NOT [duplicate]Java接口降低了可见性,只是没有[重复]
【发布时间】:2012-05-01 04:24:57
【问题描述】:

可能重复:
Reduce visibility when implementing interface in Java

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

不能降低继承方法的可见性

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

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

这是我的实现:

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

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

【问题讨论】:

    标签: java interface class-visibility


    【解决方案1】:

    默认接口的方法是public,但是你将它降低到默认可见性,即包级别的可见性。

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

    interface QueryBuilderPart {
        StringBuilder toStringBuilder();
    }
    
    interface QueryBuilderPart {
        public abstract StringBuilder toStringBuilder();
    }
    

    注意接口的方法也是abstract

    所以你应该这样做:

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

    【讨论】:

    • 不仅仅是默认情况下——接口声明的每个方法都是隐式公共的,即使它没有明确声明。要获得包级别的抽象方法,您必须使用抽象类,而不是接口。
    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2015-01-13
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多