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