接口
接口:若是一个类只是由抽象方法和全局常量组成,这种状况不会定义为一个抽象类,而是将其定义为接口.同时接口打破了抽象类子类的一个很大的问题---单继承局限.在java中,能够使用interface来定义.如:java
interface A{ public static final String MSG="YOOTK"; public abstract void print(); }
接口也必须有子类,一个子类能够使用implement关键字实现多个接口,避免单继承的局限.接口的子类,必须复写接口中的所有抽象方法.接口的对象能够利用子类对象的向上转型进行实例化操做.设计模式
接口的实际应用-----标准app
什么是标准呢?举个例子,一个计算机定义了USB接口标准,那么使用这个USB的诸如U盘,MP3等不少设备才能根据这个接口去设计.工具
interface USB{ public void start(); //定义一个USB接口,有开始和中止两个功能 public void stop(); } class Computer{ public void plugin(USB usb){ //定义一个计算机类调用这两个方法 usb.start; usb.stop; } } class Flash implements USB{ public void start(){ System.out.print(){ System.out.println("U盘开始使用") } .... } } class Print implements USB{ public void start(){ System.out.print(){ System.out.println("打印机开始使用") } .... } } public class Demo{ public static void main(String args[]){ Computer com = new Computer; //实例化计算机 com.plugin(new Flash()); //插入USB接口 com.plugin(new Print()); //插入USB接口 } }
接口的应用----工厂设计模式
让客户端只看见接口而不让看见子类,但须要一个中间的工具类来取得接口对象.而咱们能够经过工厂类取得接口对象ui
class Factory{ public static Fruit getInstance(String className){ if("apple".equals(className)){ return new Apple(); }else if("orange".equals(className)){ return new Orange(); }else{ return null; } } } public class Demo{ public static void main(String args[]){ Fruit f = Factory.getInstance("orange"); f.eat; } }
接口的好处显而易见,避免了单继承的局限spa