为什么java make接口只允许使用公共抽象方法?
为什么接口方法总是公共的,不允许保护。在抽象类中可以实现受保护的抽象方法的地方。
Abstract类可以使较低访问权限的抽象方法正确吗?接口是定义抽象列表的抽象数据类型。
有人可以向我解释为什么如此实施吗?
public abstract class Animal{
protected abstract void printName();
}
---假定为独立文件---
public class Lion extends Animal{
protected void printName(){}
}
答案 0 :(得分:2)
这回答了最终在您的评论中弹出的问题:
为什么接口方法总是公共的,不允许保护。在抽象类中可以实现受保护的抽象方法甚至更低的方法
在接口中使用abstract
以外的任何其他方法来创建public
方法是没有意义的,因为那样的话,实现类将无法看到它。实际上,在Java 9中,有 这样的东西,例如private
接口方法。但是,private
接口方法也不能是abstract
,因为这两个修饰符的含义不同。 Java 9接口中的私有方法旨在在接口中使用,例如通过default
方法。因此,在这种情况下使用private
接口方法是有意义的,因为它只能在内部使用。
Here is a link上有关该主题的有用博客文章。