抽象方法的集合就是接口。接口中可以有常量(默认为public static final),抽象方法,内部类以及Java8新增的default方法和static修饰的方法。举个例子:
其中ISecond接口继承IFirst接口。实现类同时实现ISecond,IThird接口。
public interface IFirst {
int A=1;//默认为public static final
public abstract void eat();
}
public interface ISecond extends IFirst{
int A=2;//默认为public static final
public abstract void run();
}
public interface IThird {
int A = 3;
}
public class Achievement implements ISecond,IThird{
@Override
public void eat() {
System.out.println("牛排");
}
@Override
public void run() {
System.out.println("。。。");
}
public static void main(String[] args) {
System.out.println(IThird.A);//3
ISecond second = new Achievement();//接口回调
second.eat();
second.run();
System.out.println(second.A);//2
}
}
实现类main方法中两次输出常量A的值,但结果不一样。当实现类只实现ISecond接口时,System.out.println(A);输出ISecond接口A的值,而不是IFirst接口里A的值。当实现类同时实现ISecond,IThird时,System.out.println(A);会报错,这时需要用接口名.常量的方式指定输出某个常量值。接口回调类似于多态,用接口名声明的变量指向实现类的对象,这个变量可以直接调用接口中的抽象方法跟常量。