接口
接口:若是一個類只是由抽象方法和全局常量組成,這種狀況不會定義爲一個抽象類,而是將其定義爲接口.同時接口打破了抽象類子類的一個很大的問題---單繼承侷限.在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