JAVA关键字——interface的使用(一)
1、接口的定义:用interface修饰的就是接口
public class Interface7 {
public static void main(String[] args) {
Plane plane = new Plane() ;
plane.test();
}
}
//定义一个fly接口:
interface fly{
//全局常量:
public static final int MAX_SPEED = 7900;
public static final int MIN_SPEED = 1;
//抽象方法:
public abstract void test();
}
//定义一个eat接口:
interface eat{}
//接口的继承可以多继承
interface act extends fly,eat{}
//类实现接口使用implements
class Plane implements fly{
public void test() {
System.out.println("我的速度为"+MAX_SPEED);
}
}
2、Java中,接口和类是两个并列的结构;
3、如何定义接口:定义接口中的成员
3.1 JDK7及以前:只能定义全局常量和抽象方法;
>全局常量:public static final的,可以省略不写;
>抽象方法:public abstract的,可以省略不写;
//定义一个fly接口:
interface fly{
//全局常量:
public static final int MAX_SPEED = 7900;
public static final int MIN_SPEED = 1;
//等价于
/*
int MAX_SPEED = 7900;
int MIN_SPEED = 1;
*/
//抽象方法:
public abstract void test();
//等价于
// void test();
}
3.2 JDK8及以后:除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法(使用好像较少,不常用);
4、接口不能定义构造器,也就是说接口不可以实例化。其实接口中定义的成员就是一些类的对象都有的属性或方法,把它们抽象出来然后放在一个接口中;
5、Java开发中,接口通过让类去实现(implements)的方式来使用;
class Plane implements fly{
public void test() {
System.out.println("我的速度为"+MAX_SPEED);
}
}
如果实现类中有实现接口中所有的抽象方法,则这个类就可以实例化;
//因为Plane实现了接口所有的抽象方法(test()),所以可以实例化
Plane plane = new Plane() ;
如果实现类中没有完全实现所有的抽象方法,则这个类还得是抽象类。
abstract class Plane2 implements fly{
//没有实现抽象方法,那这个类还得是抽象类
}
6、Java类可以实现多个接口 ,弥补了Java单继承性的局限性;
格式:class AA extends BB implements CC,DD,EE
7、接口和接口之间可以多继承;
interface act extends fly,eat{}