Java 接口中的保护方法

Java 接口中的保护方法,java,interface,protected,modifier,Java,Interface,Protected,Modifier,我有一个接口和两个实现这个接口的类。请参见下面的代码作为示例 AddAchighedMilestone是一种需要在每个类中实现的方法,但只能由同一个包中的类执行 为什么这种方法不能得到保护 我希望它受到保护,这样它只能由同一个包中的类使用。 (该方法不会被任何其他类扩展) 但是Project类中的修饰符总是需要是公共的,我如何解决这个问题呢 示例代码: package Base; public interface MilestoneAchievable { public Milest

我有一个接口和两个实现这个接口的类。请参见下面的代码作为示例

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

为什么这种方法不能得到保护

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

但是Project类中的修饰符总是需要是公共的,我如何解决这个问题呢

示例代码:

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
    }
}

接口中声明的任何方法都是公共的。 子类不能降低方法的可见性/访问性。 看见
详情请参阅

接口中声明的任何方法都是公共的。 子类不能降低方法的可见性/访问性。 看见
详情请参阅

不要公开你的界面

或者更确切地说,有两个接口:

公共的

public interface MilestoneAchievable {
    public Milestone getMaxMilestone();
}
一包

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

只是不要公开你的界面

或者更确切地说,有两个接口:

公共的

public interface MilestoneAchievable {
    public Milestone getMaxMilestone();
}
一包

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

在您的代码中,Project类没有实现MilestoneAchivable interfaceForgot,现在是:)在您的代码中,Project类没有实现MilestoneAchivable interfaceForgot,现在是:)我得到一个错误,实现的addAchibizedMilestone方法的修饰符需要是公共的…我没有它^^可能是因为我们的java版本有所不同?顺便说一下,将其公开不会改变任何事情:您的接口仍将受到包限制:)我收到一个错误,即实现的AddAchighedMilestone方法的修饰符需要公开…我没有它^^可能是因为我们的java版本有所不同?顺便说一下,将其公开不会改变任何事情:您的接口仍然是包限制的:)项目没有子类。Protected仅用于实现只有同一包中的类才能执行该方法。Yogesh_D的意思是
Project
是一个子类。它是
milestoneaivable
的一个子类,并且它不能降低从公共到包私有的可见性。正如您在中看到的,它确实会降低可见性。Project没有子类。Protected仅用于实现只有同一包中的类才能执行该方法。Yogesh_D的意思是
Project
是一个子类。它是
milestoneaivable
的一个子类,并且它不能降低从公共到包私有的可见性。如你所见,这确实会降低能见度。