java - 接口(interface)中的 protected 方法

标签 java interface protected modifier

我有一个接口(interface)和两个实现该接口(interface)的类。请参阅下面的代码作为示例。

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

为什么addAchievedMilestone方法不能被保护?

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

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

最佳答案

接口(interface)中声明的任何方法都是公共(public)的。 并且子类不能减少方法的可见性/访问。 请参阅Why can't you reduce the visibility of a method in a Java subclass? 了解详情。

关于java - 接口(interface)中的 protected 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422623/

相关文章:

java - 为具有不同参数的方法设计接口(interface)

delphi 访问 TControl 的 protected 属性

c++ - 类继承保护访问

java - 高效的动态生成的 Java GUI

java - 不断收到预期的错误类、接口(interface)或枚举

java.time.Period normalize() 更改月份字段的符号和值,尽管绝对值小于 12

java - 在 Java 中,我应该为常量属性使用 getter 还是接口(interface)标记?

c++ - C++ 中的公有和私有(private)继承

java - JTable模型列

java - 在java中,如何在线程中获取文件名