1、接口中是可以定义静态方法的,静态方法必须要有实现。且这个静态方法只能用public修饰。
例如:public static void test(){} 或 static void test(){}.//public省略不写默认也是用public来修饰。
静态方法的方法名是可以任意的,即可以定义main方法,
public interface InterfaceDemo {
static void staticMethod(){
System.out.println("static method");
}
public static void main(String[] args){
System.out.println("main method");
}
private static void privateStaticMethod(){ //报错
}
protected static void protectedStaticMethod(){//报错
}
}
2、对于普通方法,修饰符为: public, abstract, default以及组合 public abstract
public interface InterfaceDemo2 {
public void test();//public
void test2();// default
abstract void test3();//abstract
public abstract void test4();//public abstract
}
总结:
关于接口中的方法定义规则为:only public, abstract, default, static and strictfp are permitted;即只允许public,abstract,default,static,public abstract,public static,来作为修饰接口中的方法,其它是不允许的。
基于接口的种种特性,因此,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则的一种体现。