java====interface接口

package cn.china;
abstract class AbsDemo{
    abstract void show1();
    abstract void show2();
}
/**
 *當一個抽象類中的方法都是抽象的時候,這時能夠將該抽象類用
 *另外一種形式定義和表示,就是 接口 interface
 *
 *定義接口使用的關鍵字不是class,是interface。
 **/
interface Demo5{
    public static final int NUMBER=4;
    public abstract void show1();
    public abstract void show2();
}
/**
 * 類與類之間是繼承關係,類與接口是實現關係。
 * 接口不能實例化
 * 只能由實現了接口的子類並覆蓋了接口中全部的抽象方法後,該子類才能夠實例化
 * 不然,這個子類就是一個抽象類*/
class DemoImpl implements Demo5{
    public void show1(){}
    public void show2(){}
}
/**
 * 對於接口當中常見的成員,並且這些成員都有固定的修飾符
 * 一、全局常量:public static final
 * 二、抽象方法 public abstract
 * 由此得出結論,接口中的成員都是公共的權限。*/

/**
 * java中不支持多繼承,由於會出現調用的不肯定性。
 * 因此java將多繼承進行改良,java中變成多實現。
 * 一個類能夠實現多個接口*/
interface Aa{
    public abstract void show6();
    
}
interface Bb{
    public abstract void show6();
}
class Test1 implements Aa,Bb{
    public void show6(){
        
    }
    
}
/**
 * 一個類在繼承另外一個類的同時,還能夠實現多個接口
 * 接口與接口*/
class q{
    public void method(){}
}
 class Test2 extends q implements Aa,Bb{
    public  void show6(){
        
    }
    interface cc{
        void showa();
    }
    interface mm{
        void showb();
    }
    interface qq extends cc,mm{//接口與接口能夠多繼承關係,並且接口能夠多繼承
        void function();
    }
    class ww implements qq{
        public void showa(){}
        public void showb(){}
        public void function(){}
    }
}
 /**
  * 抽象類與接口的異同點:
  * 相同點:都是不斷向上抽取而來的
  * 不一樣點:
  * 一、抽象類須要被單繼承abstract,接口須要被多實現implements
  * 二、抽象類中能夠定義抽象方法和非抽象方法,此類繼承後能夠直接使用非抽象方法。
  * 接口中只能定義抽象方法,必須由子類去實現
  * 三、抽象類是 is a關係在定義該體系共性能容;接口是like a關係,定義體系的額外功能。
  * 
  * 例: 學生有學習功能  能夠被提取定義抽象類  ;
  * 學生抽菸功能, 是額外功能  使用interface 接口定義
  * 
  * 例:
  * 犬按功能分,有導盲犬,搜救犬
  * abstract class 犬{
  * abstract void 吼叫();
  * }
  * class 導盲犬 extends 犬 implements 導盲{
  * public void 吼叫(){}
  * public void 導盲(){}
  * }
  * interface 導盲{
  * abstract void 導盲();
  * }*/
 //在不一樣的問題領域中,有不一樣的分析方式。
 /**
  * 筆記本電腦使用,
  * 爲了擴展筆記本功能,擔往後出現什麼功能設備不知道
  * 
  * 定義一個規則,只要往後出現的設備都符合這個規則就能夠了
  * 規則在java中就是接口 interface*/
// class Mouse{
//     
// }
//class Bookpc{
//    public static void main(String[]args){
//        useMouse(new Mouse());
//    }
//    public static void useMouse(Mouse m){
//        m.open();
//    }
//}
 interface USB{ //暴漏規則
     public abstract void open();
     public abstract void close();
 }
 public class Interface{
        public static void main(String[]args){
//            DemoImpl D=new DemoImpl();
//            System.out.println(D.NUMBER);
//            System.out.println(DemoImpl.NUMBER);
//            System.out.println(Demo.NUMBER);
            // TODO Auto-generated method stub
//            Test1 t=new Test1();
//            t.show6();

            //useUSB(null);
            UPan U=new UPan();
            useUSB(U);//功能擴展了
        }
        //使用規則
        public static void useUSB(USB u){//接口類型的引用,用於接收(指向)接口子類的對象。
            u.open();
            u.close();
        }
        //實現規則
    class UPan implements USB{
            public void open(){
                System.out.println("UPan open");
            }
            public void close(){
                System.out.println("UPan close");
            }
            
        }
 }
相關文章
相關標籤/搜索