
一、接口的概念接口使用interface关键字定义它是一种行为规范 / 能力标准主要用来规定 “某类事物必须具备哪些行为”。public interface 接口名 { }接口可以理解为制定规则定义能力不关心具体实现只关心 “能不能做”。二、接口的基本定义public interface Flyable { // 抽象方法规定“能飞” void fly(); }在 Java 8 以后接口中可以包含抽象方法默认方法default静态方法static私有方法private。但初学阶段先掌握最核心的抽象方法 类实现接口。三、类实现接口类通过implements关键字实现接口并必须实现接口中的所有抽象方法。public class Bird implements Flyable { Override public void fly() { System.out.println(鸟扇动翅膀飞翔); } }完整示例public interface Flyable { void fly(); }public class Bird implements Flyable { Override public void fly() { System.out.println(鸟扇动翅膀飞翔); } }public class Plane implements Flyable { Override public void fly() { System.out.println(飞机依靠发动机飞行); } }public class TestFly { public static void main(String[] args) { Flyable f1 new Bird(); Flyable f2 new Plane(); f1.fly(); f2.fly(); } }输出鸟扇动翅膀飞翔 飞机依靠发动机飞行四、接口的特点特点说明接口不是类使用interface定义接口不能创建对象不能new 接口名()接口中的方法默认是public abstract可以不写但编译后仍然是公共抽象方法接口中的变量默认是public static final必须赋值且不能修改类实现接口使用implements实现类必须实现全部抽象方法除非是抽象类一个类可以实现多个接口implements A, B, C五、接口中的常量接口中可以定义常量格式public static final 类型 常量名 值;例如public interface Constants { int MAX_COUNT 100; String NAME Java; }接口里的变量会被自动看作public static final所以必须定义时赋值并且不能修改。六、接口与抽象类的区别对比项抽象类接口定义方式abstract classinterface构造方法有没有成员变量普通成员变量主要是常量方法抽象方法、普通方法抽象方法、默认方法、静态方法等关系继承关系extends实现关系implements单继承 / 多实现类只能单继承类可以多实现作用共性模板 部分实现行为规范、能力标准七、接口的多实现一个类可以同时实现多个接口这是接口最重要的优势之一。public interface Flyable { void fly(); }public interface Swimmable { void swim(); }public class Duck implements Flyable, Swimmable { Override public void fly() { System.out.println(鸭子飞起来); } Override public void swim() { System.out.println(鸭子游泳); } }public class TestDuck { public static void main(String[] args) { Duck duck new Duck(); duck.fly(); duck.swim(); } }八、接口的继承接口也可以继承接口并且支持多继承。public interface Flyable { void fly(); }public interface Attackable extends Flyable { void attack(); }public class Bird implements Attackable { Override public void fly() { System.out.println(鸟飞); } Override public void attack() { System.out.println(鸟攻击); } }九、面向接口编程面向接口编程的核心思想是面向接口调用不关心具体实现。例如public interface USB { void work(); }public class Mouse implements USB { Override public void work() { System.out.println(鼠标工作); } }public class Keyboard implements USB { Override public void work() { System.out.println(键盘工作); } }public class Computer { public void useUSB(USB usb) { usb.work(); } }public class TestComputer { public static void main(String[] args) { Computer computer new Computer(); computer.useUSB(new Mouse()); computer.useUSB(new Keyboard()); } }这里Computer不关心传入的是鼠标还是键盘只关心它是否符合USB接口规范。十、本章小结接口使用interface定义是行为规范和能力标准。抽象方法接口中主要定义要实现的行为。类实现接口使用implements必须实现全部抽象方法。多实现一个类可以实现多个接口。面向接口编程面向接口调用降低耦合提高扩展能力。