我有一个接口和两个实现这个接口的类。请看下面的代码作为示例。
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
}
}发布于 2016-04-05 17:45:00
接口中声明的任何方法都是公共的。并且子类不能减少方法的可见性/访问。详情请参见Why can't you reduce the visibility of a method in a Java subclass?。
发布于 2016-04-05 17:46:34
只是不要让你的接口公开
或者更确切地说,做两个接口:
一个公共的
public interface MilestoneAchievable {
public Milestone getMaxMilestone();
}套餐一
interface MilestoneAchievableProt extends MilestoneAchievable {
void addAchievedMilestone(Milestone m) throws Exception;
}https://stackoverflow.com/questions/36422623
复制相似问题