接口中的受保护方法

时间:2016-04-05 09:41:08

标签: java interface protected modifier

我有一个接口和2个实现此接口的类。请参阅以下代码作为示例。

addAchievedMilestone是一个需要在每个类中实现的方法,但只能由同一个包中的类执行。

为什么addAchievedMilestone方法不受保护?

我希望它受到保护,因此它只能由同一个包中的类使用。 (该方法不会被任何其他类扩展)

但Project-class中的修饰符总是需要公开,我该如何解决?

示例代码:

package Base;

public interface MilestoneAchievable {

    public Milestone getMaxMilestone();
    void addAchievedMilestone(Milestone m) throws Exception;
}

项目类:

package Base;
public class Project implements MilestoneAchievable{

    public Milestone getMaxMilestone() {
        //implementation goes here
    }
     public void addAchievedMilestone(Milestone m) throws Exception
    {
    //implementation goes here
    }
}

2 个答案:

答案 0 :(得分:3)

接口中声明的任何方法都是公共的。 子类不能降低方法的可见性/访问权限。 见Why can't you reduce the visibility of a method in a Java subclass? 详情。

答案 1 :(得分:1)

不要公开你的界面

或者更确切地说是2个接口:

公众

public interface MilestoneAchievable {
    public Milestone getMaxMilestone();
}

一个包

interface MilestoneAchievableProt extends MilestoneAchievable {
    void addAchievedMilestone(Milestone m) throws Exception;
}