有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
接口(interface)是抽象方法和常量值定义的集合。
从本质上讲,接口是一种特殊的抽象类, 这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。例如:
public interface Runner{ int id =1; public void start(); public void run(); public void stop(); }
案例:蝙蝠会飞,还会用牙齿咬。
首先定义一个飞行的接口:
package cn.com.Classwork; public interface Flyable{ public final int wingsNumber = 2; public abstract void fly(); }
接着定义一个咬的接口:
package cn.com.Classwork; public interface Bitable{ public int teethNumber = 0; public abstract void bite(); }
最后定义蝙蝠类去实现这两个接口:
package cn.com.ClassWork; public class Bat implements Flyable,Bitable{ @Override public void bite(){ System.out.println("吸血"); } @Override public void fly(){ System.out.println("用翅膀飞"); } public static void main(String[] args){ System.out.println("Flyable.wingsNumber"); } }
用interface来定义。
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有方法都默认是由public abstract修饰的。
接口没有构造方法。构造方法用于创建对象。
实现接口的类中必须提供接口中所有方法的具体实现内容。
多个无关的类可以实现同一个接口。
一个类可以实现多个无管道接口。
与继承关系类似,接口与实现类之间存在多态性。
接口也可以继承另一个接口,使用extends关键字。