接口
接口:如果一个类只是由抽象方法和全局常量组成,这种情况不会定义为一个抽象类,而是将其定义为接口.同时接口打破了抽象类子类的一个很大的问题---单继承局限.在java中,可以使用interface来定义.如:
interface A{ public static final String MSG="YOOTK"; public abstract void print(); }
接口也必须有子类,一个子类可以使用implement关键字实现多个接口,避免单继承的局限.接口的子类,必须复写接口中的全部抽象方法.接口的对象可以利用子类对象的向上转型进行实例化操作.
接口的实际应用-----标准
什么是标准呢?举个例子,一个计算机定义了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接口 } }
接口的应用----工厂设计模式
让客户端只看见接口而不让看见子类,但需要一个中间的工具类来取得接口对象.而我们可以通过工厂类取得接口对象
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; } }
接口的好处显而易见,避免了单继承的局限