具有较低访问权限的具体类实现接口

时间:2018-10-05 06:39:08

标签: java

为什么java make接口只允许使用公共抽象方法?

为什么接口方法总是公共的,不允许保护。在抽象类中可以实现受保护的抽象方法的地方。

Abstract类可以使较低访问权限的抽象方法正确吗?接口是定义抽象列表的抽象数据类型。

有人可以向我解释为什么如此实施吗?

public abstract class Animal{
    protected abstract void printName(); 

}

---假定为独立文件---

public class Lion extends Animal{

    protected void printName(){}

}

1 个答案:

答案 0 :(得分:2)

这回答了最终在您的评论中弹出的问题:

  

为什么接口方法总是公共的,不允许保护。在抽象类中可以实现受保护的抽象方法甚至更低的方法

在接口中使用abstract以外的任何其他方法来创建public方法是没有意义的,因为那样的话,实现类将无法看到它。实际上,在Java 9中,有 这样的东西,例如private接口方法。但是,private接口方法也不能是abstract,因为这两个修饰符的含义不同。 Java 9接口中的私有方法旨在在接口中使用,例如通过default方法。因此,在这种情况下使用private接口方法是有意义的,因为它只能在内部使用。

Here is a link上有关该主题的有用博客文章。