再讲接口之前先我们先来了解以下抽象类
我们在编程定义一个类时,常常无法明确一些类的方法具体实现什么功能。name如何使一个类里面既包含了方法有不需要提供方法的实现呢?
针对上述问题java提供了抽象方法来满足需求。抽象方法必须有abstract关键字 来修饰,并且在定义方法时不需要提供实现方法体。当一个类中包含了抽象方法,那么该类也必须使用abstract关键字修饰,这种使用abstract关键字修饰的类就叫抽象类。
抽象类和抽象方法的语法:
//定义抽象类
[修饰符] abstract class 类名{
//定义抽象方法
[修饰符] abstract 方法返回值类型 方法名([参数列表]);
}
接下来进入主题:
接口: 如果一个类中所有的方法都是抽象的,则可以将这个类定义为java的另一种形式——接口。接口是一种特殊的抽象类,他不能包含普通方法,其内部的所有方法都是抽象方法。
与定义类不同的是,在定义接口时,不在使用class关键字,而是使用interface关键字来声明。格式如下:、
[修饰符] interface 接口名[extends 父接口1,父类2...]{
[public] [static] [final] 常量类型 常量名=常量值;
[public] [abstract] 方法返回值类型 方法名([参数列表]);
[public] default 方法返回值类型 方法名([参数列表]);//默认方法的方法体使用default修饰
[public] static 方法返回值类型 方法名 ([参数列表]);//静态方法(类方法)的方法体使用static修饰
}
讲解上述代码:
- “extends 父接口1 ,父接口2…”表示定义一个接口时,可以同时继承多个父接口,这也是为了解决类的单继承的限制。
- “[]”里面的内容可选,也可以直接省略不写,系统自动添加。
接口的实现类: 接口的实现类通过implements 关键字实现当前接口,并实现接口中的所有抽象方法。需要注意的是:一个类在继承父类的同时实现多个接口,并且多个接口之间需要使用英文逗号分隔。
定义接口的实现类语法格式:
[修饰符] class 类名 [extends 父类名] [implements 接口1,接口2...]{
...
}