接口的使用
①接口使用interface来定义
②Java中,接口和类是并列的两个结构
③定义接口中的成员
JDK7及以前:只能定义全局常量和抽象方法
全局常量: public static final修饰的,书写时,可以省略不写
抽象方法: public abstract修饰的,书写时,可以省略不写
interface fly{public static final int MAX_SPEED = 7900;int MIN_SPEED = 1; //省略不写public abstract void fly();void stop(); //省略不写
}
Java开发中,接口通过让类去实现( implements )的方式来使用
如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化
如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类
public class Test {public static void main(String[] args) {Bird bd = new Bird();bd.fly();bd.stop();}
}class Bird implements fly{@Overridepublic void fly() {System.out.println("鸟在飞");}@Overridepublic void stop() {System.out.println("鸟停下了");}
}interface fly {public static final int Max_SPEED = 7900;int MIN_SPEED = 1; //省略不写public abstract void fly();void stop(); //省略不写
}
接口之间可以继承,且可以多继承
接口的具体使用,体现多态性
接口,实际上可以看做是一种规范
JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
public interface Compare {//静态方法,只能直接通过接口调public static void method1(){system.out.print("这是静态方法");}//默认方法,通过实现类的对象调,可以在实现类中重写public default void method2(){system.out.print("这是默认方法");}
}
如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法。-- >类优先原则
实现类的方法中调用接口中的静态方法
接口名.super.静态方法名