Java interfaces reduction in visibility, only NOT

class-visibility, interface, java

Solution

By default interface's method is `public`, but you reduce it to default visibility, which is package level visibility.

So the following two block of code are the same:

interface QueryBuilderPart {
    StringBuilder toStringBuilder();
}

interface QueryBuilderPart {
    public abstract StringBuilder toStringBuilder();
}

Note that interface's method is `abstract` as well

So you should do as following:

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

Problem

Possible Duplicate: Reduce visibility when implementing interface in Java I must be missing something obvious, but i am getting: Cannot reduce the visibility of the inherited method And I don't see how. This is my interface: ``` interface QueryBuilderPart { StringBuilder toStringBuilder(); } ``` And this is my implementation: ``` public class Stupid implements QueryBuilderPart { @Override StringBuilder toStringBuilder() { return null; } } ``` Both the class and the implementation are in the same package. Any Ideas?

Original source

Related problems