尽管事实上这个问题已经问了很久了,但是我认为对它的全面描述可以澄清为什么在方法的接口常量之前不需要使用公共抽象,而在方法的常量之前不需要使用public static final。
首先,接口用于为一组不相关的类指定通用方法,每个类都将具有唯一的实现。因此,不可能将access修饰符指定为private,因为其他类无法覆盖它。
其次,尽管可以启动接口类型的对象,但是接口是由实现该接口的类实现的,而不是继承的。并且由于接口可能是由不在同一个程序包中的不同无关类实现(实现)的,因此受保护的访问修饰符也无效。因此,对于访问修饰符,我们只有公共选择权。
第三,接口没有任何数据实现,包括实例变量和方法。如果出于逻辑原因在接口中插入已实现的方法或实例变量,则它必须是继承层次结构中的超类,而不是接口。考虑到这一事实,由于接口中无法实现任何方法,因此接口中的所有方法都必须是抽象的。
第四,接口只能包含常量作为其数据成员,这意味着它们必须是最终的,当然最终常量被声明为静态的,以仅保留它们的一个实例。因此,对于接口常量,static final也是必须的。
因此,总之,尽管在接口常量之前使用公共抽象方法和在方法常量之前使用公共静态最终方法是有效的,但是由于没有其他选择,因此它被认为是多余的,因此不使用。