【从零开始学Java | 第十三篇】接口(Interface) 目录前言一、什么是接口概述接口的定义和使用二、接口的细节接口中成员的特点接口和类之间的关系总结前言在Java 中有一条死规定单继承。一个类只能有一个父类。假设有一个Dog类继承了Animal动物类现在我们想让Dog能够有鸟类一样飞的能力可以让Dog类再继承鸟类吗根据单继承规定显然是不可以的。接口的出现就打破了这种单继承的局限性。一、什么是接口概述接口就是一种极其严格的规则是对行为的抽象。比喻不管是电脑、充电宝还是插线板上面都有 USB 接口。USB 规范规定了插口的尺寸、有几根触点、电流多大。 至于你往这个 USB 接口上插的是鼠标、键盘、还是小风扇电脑根本不关心。只要你的设备符合 USB 规范就能插上去工作。在 Java 中接口就是把这种规范用代码写出来。接口的定义和使用接口用关键字interface来定义publicinterface接口名{}接口不能实例化接口和类之间是实现关系通过implements关键字表示public class 类名 implements 接口名{}接口的子类实现类要么重写接口中所有的抽象方法要么是抽象类。注1接口和类的实现关系可以单实现也可以多实现。public class 类名implements接口名1 接口名2{}注2实现类还可以再继承一个类的同时实现多个接口。public class 类名extends父类implements接口名1 接口名2{}练习解答首先定义Animal动物父类package com.sprneft.interfacedemo01; public abstract class Animal { private String name; private int age; public Animal() { } public Animal(String name, int age) { this.name name; this.age age; } public String getName() { return name; } public void setName(String name) { this.name name; } public int getAge() { return age; } public void setAge(int age) { this.age age; } //抽象方法——吃 public abstract void eat(); }定义Frog、Dog、Rabbit类public class Frog extends Animal implements Swim{ public Frog() { } public Frog(String name, int age) { super(name, age); } Override public void eat() { System.out.println(青蛙在吃虫子); } Override public void swimming() { System.out.println(青蛙在蛙泳); } }public class Dog extends Animal implements Swim{ public Dog() { } public Dog(String name, int age) { super(name, age); } Override public void eat() { System.out.println(狗在吃骨头); } Override public void swimming() { System.out.println(狗在狗刨); } }public class Rabbit extends Animal{ public Rabbit() { } public Rabbit(String name, int age) { super(name, age); } Override public void eat() { System.out.println(兔子在吃胡萝卜); } }定义游泳的接口public interface Swim { public abstract void swimming(); }二、接口的细节接口中成员的特点成员变量只能是常量默认修饰符public static final构造方法无。成员方法只能是抽象方法默认修饰符public abstract接口和类之间的关系类和类的关系继承关系只能单继承 不能多继承但是可以多层继承。类和接口的关系实现关系可以单实现也可以多实现还可以在继承一个类的基础上实现。若两个接口中有同名方法只在实现的类中实现一次就好public interface Inter1 { public abstract void method1(); public abstract void method2(); public abstract void method3(); }public interface Inter2 { public abstract void method1(); public abstract void method2(); public abstract void method3(); }public class Test implements Inter1,Inter2{ Override public void method1() { } Override public void method2() { } Override public void method3() { } }接口和接口的关系继承关系可以单继承也可以多继承。总结关键字interface定义implements实现。特权支持多实现打破单继承。约束成员变量默认是公开静态常量方法默认是公开抽象方法