刚刚在桌面趴着睡醒,突然被问道”书里说接口可以有public default static private修饰的方法,为什么没有protected方法呢?“
我一开始听到就有点懵,好有问题的问题,牛。
这个问题就得从接口的设计和历史来说了吧。
接口一开始设计就是为了面向所有的类,让其实现。作为接口的方法一开始是为了让实现类对其进行实现。而JDK8加入的default方法则是对接口的方法一个补充,使其更完善。而static方法则是突破类的限制,可以直接通过接口.方法来调用方法。到了JDK9在接口中加入private方法是为了给default提供可以重复使用的方法。
那为什么把protected方法漏掉了?
那protected方法有什么用呢?JAVA中protected是成员访问修饰关键字,表示所修饰的成员可以被本类和派生类中可以访问。那在接口中设计这样的一个方法又有什么用呢,接口是为了给实现类准备的,本来就是“公众的”,后来补充的进去的方法是为了更好提供“接口”的 服务。