目录
引言
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。
一,接口类的语法结构和定义
[修饰符列表] interface 接口名{
java语句
}
接口声明使用interface关键字 interface Api{}
java 1.7 之前的接口规则:接口 = 常量 + 抽象方法
java 1.8 接口新定义规则:接口 = 常量(多个) + 抽象方法(多个) + default实现方法(多个) + static实现方法(多个)
java 1.8 接口函数式接口规则: 接口 = 常量 + default实现方法 + static实现方法 + 抽象方法(有且 只有一个抽象方法)
二,接口的特点
- 用 interface 来定义。
- 接口也是一种引用数据类型
- 接口中的所有成员变量都默认是由public static final修饰的。
- 接口中的所有方法都默认是由public abstract修饰的。
- 接口没有构造方法。构造方法用于创建对象
- 实现接口的类中必须提供接口中所有方法的具体实现内容。
- 多个无关的类可以实现同一个接口
- 一个类可以实现多个无关的接口
- 与继承关系类似,接口与实现类之间存在多态性
- 接口也可以继承另一个接口,使用extends关键字。
- 实现接口的类中必须提供接口中所有方法的具体实现内容。
- 多个无关的类可以实现同一个接口
- 一个类可以实现多个无关的接口
- 与继承关系类似,接口与实现类之间存在多态性
三,接口实现类implements
为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。在java语言中,接口由类通过关键字implements来实现,以便使用接口中的方法。实现多个接口用逗号隔开。
- 实现类是针对接口来讲的。
- 实现类就是来实现接口中约定的内容。(通过重写方法)
- 实现通过关键字implements来实现的。
示例如下:
编写一个接口:
public interface Animal {
public String name();
public String acion();
public int pf(int i);
}
编写一个实现类
public class Absract1 implements Animal {
@Override
public int pf(int i) {
return i*i;
}
@Override
public String name() {
return "我的名字叫";
}
@Override
public String acion() {
return "我擅长";
}
}
编写一个测试类如下:
public class AnimalTest {
public static void main(String[] args) {
Absract1 an=new Absract1();
System.out.println(an.pf(5));
System.out.println(an.name());
System.out.println(an.acion());
}
}
输出结果如下:
四,接口类使用实例
接口使用的过程为:
1,声明接口类,在接口类内编写常量,方法等
2,声明实现接口类(implements),实现接口,重写接口类的方法
3,声明测试类,在测试类内实例化实现类,调用实现类内的方法
public class InterfaceTest {
public static void main(String[] args) {
// 全局变量可以直接调用
System.out.println(Flyable.MAX_SPEED);
// 实例化实现类Plane
Plane plane = new Plane();
plane.fly();
plane.stop();
// 实例化实现类Bullt
Bullet bullet = new Bullet();
bullet.fly();
bullet.stop();
bullet.att();
}
}
// 飞接口
interface Flyable{
// 全局常量
public static final int MAX_SPEED = 7900;
int MIN_SPEED = 1;
// 抽象方法
public abstract void fly();
void stop();
}
// 攻击性接口
interface Attackable{
// 抽象方法
public abstract void att();
}
/**
* 飞机实现类
*/
class Plane implements Flyable{
@Override
public void fly(){
System.out.println("使用引擎起飞");
}
@Override
public void stop(){
System.out.println("驾驶员减速降落");
}
}
/**
* 风筝实现类
*/
class Kite implements Flyable{
@Override
public void fly(){
System.out.println("乘风而飞");
}
@Override
public void stop(){
System.out.println("收线降落");
}
}
/**
* 子弹实现类
*/
class Bullet implements Flyable,Attackable{
@Override
public void fly(){
System.out.println("biubiubiu");
}
@Override
public void stop(){
System.out.println("papapa");
}
@Override
public void att(){
System.out.println("攻击性");
}
}
// 接口的多继承
interface A extends Flyable,Attackable{
}