接口的使用:java
1)接口使用interface
来定义。ide
2)在java
中,接口和类是并列的两个结构。code
3)如何定义接口:定义接口中的成员。对象
JDK7
及之前:只能定义全局常量和抽象方法。继承
public static final
(可省略)public abstract
(可省略)JDK8
:除了定义全局常量和抽象方法以外,还能够定义静态方法、默认方法。接口
// 调用接口中默认的方法 CompareA.super.method3(); CompareB.super.method3();
4)接口中不能定义构造器,意味着接口不能够实例化。开发
5)java
开发中,接口经过让类去实现(implements
)的方式来使用。
若是实现类覆盖了接口的抽象方法,则此实现类就能够实例化。
若是实现类没有覆盖接口的抽象方法,则此实现类还是一个抽象类。flash
6)java
类能够实现多个接口 → 弥补了java
单继承的局限性。
格式:class AAextends BB implements CC,DD,EE
it
public class InterfaceTest { public static void main(String[] args) { System.out.println(Flyable.MAX_SPEED);//7900 System.out.println(Flyable.MIN_SPEED);//1 Plane plane = new Plane(); plane.fly();//经过引擎起飞 } } interface Flyable{ //全局常量 public static final int MAX_SPEED = 7900;//未省略 int MIN_SPEED = 1;//省略 //抽象方法 public abstract void fly();//未省略 void stop();//省略 } interface Attackable{ void attack(); } class Plane implements Flyable{ @Override public void fly() { System.out.println("经过引擎起飞"); } @Override public void stop() { System.out.println("驾驶员减小起飞"); } } abstract class Kite implements Flyable{ @Override public void fly() {} } class Bullet extends Object implements Flyable,Attackable{ @Override public void attack() {} @Override public void fly() {} @Override public void stop() {} }
7)接口与接口之间能够继承,并且能够多继承。class
interface AA { void method1(); } interface BB { void method2(); } interface CC extends AA,BB {}
8)接口的具体使用,体现多态性。
9)接口能够看作是一种规范。
public class USBTest { public static void main(String[] args) { Computer computer = new Computer(); // 建立了接口的非匿名实现类的非匿名名对象 Flash flash = new Flash(); computer.transferData(flash); System.out.println("************************"); // 建立了接口的非匿名实现类的匿名名对象 computer.transferData(new Printer()); System.out.println("************************"); // 建立了接口的匿名实现类的非匿名名对象 USB phone = new USB() { @Override public void start() { System.out.println("手机开始工做"); } @Override public void stop() { System.out.println("手机结束工做"); } }; computer.transferData(phone); System.out.println("************************"); // 建立了接口的匿名实现类的匿名名对象 computer.transferData(new USB() { @Override public void start() { System.out.println("MP3开始工做"); } @Override public void stop() { System.out.println("MP3结束工做"); } }); } } class Computer { public void transferData(USB usb) { usb.start(); System.out.println("具体传输数据的细节"); usb.stop(); } } interface USB { public abstract void start(); void stop(); } class Flash implements USB{ @Override public void start() { System.out.println("U盘开始工做"); } @Override public void stop() { System.out.println("U盘结束工做"); } } class Printer implements USB { @Override public void start() { System.out.println("打印机开始工做"); } @Override public void stop() { System.out.println("打印机开始工做"); } }