一、接口的使用
- Java中,接口和类是并列的两个结构
- 接口中不能定义构造器,意味着接口不能实例化!只能通过接口的实现类进行实例化!若需直接使用直接实现类进行实例化,则此时接口的实现类必须实现接口中所有的抽样方法;否则只能作为抽样类存在,无法直接实例化
- Java类可以实现多个接口 --->弥补了Java类的单继承性缺点。
- 类和类之间:继承关系 类和接口之间:实现 接口和接口之间:实现
- 如果实现类实现了多个接口,而这多个接口中声明了同名同参数的默认方法,那么在实现类没有重写此方法的情况下 ,报错--->接口冲突
- 小栗子:U盘插入电脑中,必须先安装驱动,把那些实现类先跑起来,这个时候传输数据才能和实现类交互;JDBC中定义了大量的接口,里面定义了如何操作数据库的规范,每个不同的数据库,给出不同的实现类,程序员面向接口编程
二、接口演示
interface Flyable{
//jdk 7接口里面定义了全局常量和抽样方法
public abstract void fly();//抽样方法
void fly1();//抽样方法,前面的关键字可省略
public static final int MAX_SPEED = 10;//全局常量
int MAX_SPEED1 = 100;//前面的关键字可省略
//****************************************************************
//jdk 8接口新增了静态方法和默认方法
public static void method1(){ //静态方法
System.out.println("北京欢迎你!");
}
public default void method2(){ //默认方法
System.out.println("南京欢迎你!");
}
default void method3(){ //默认方法2 可省略前面的public,还是public的
System.out.println("武汉欢迎你!");
}
}
接口注意:
调用方式:① 抽样方法:根据被重写类来调用
② 静态方法:Flyable.method1();
③ 默认方法:实现类对象.method2();
三、子类调用多个重写方法
//此类的声明:
//class SubClass extends SuperClass implements CompareA,CompareB
public void myMethod(){
method3();//调用自己定义的重写方法
super.method3();//调用的是父类中声明的
//调用的接口中的默认方法
CompareA.super.method3();
CompareB.super.method3();
}