天天看點

接口

/**
 * 1.接口使用interface關鍵字來定義的
 * 2.java中,接口和類是并列的結構
 * 3.如何定義接口:定義接口中的成員
 *      3.1 JDK7及以前:隻能定義全局常量和抽象方法
 *          >全局常量:public static final的,但是書寫時可省略不寫(預設為public static final的)
 *          >抽象方法:public abstract的
 *
 *      3.2 JDK8及以後:除了定義全局常量和抽象方法外,還可以定義靜态方法、預設方法
 * 4.接口中不能定義構造器,意味着接口不可以執行個體化
 * 5.java開發中,接口都是通過類去實作(implements)的方式來使用。
 *   如果實作類覆寫了接口中的所有抽象方法,則此實作類可以執行個體化。
 *   如果實作類沒有覆寫接口中的所有抽象方法,則此實作類仍為一個抽象類
 * 6.java類可以實作多個接口----->彌補了java單繼承性的局限性。
 *      >格式:class AA extends BB implements CC,DD,EE
 * 7.   接口與接口之間可以繼承,而且可以多繼承,
 * ********************************
 * 8.接口的具體使用,展現多态性
 * 9.接口,實際上可看作是一種規範
 *
 * 面試題:抽象類與接口有哪些異同?
 *
 */
      
1 package com.fu.java2;
 2 
 3 
 4 public class InterfaceTest {
 5     public static void main(String[] args) {
 6         System.out.println(Flyable.MAX_SPEED);
 7         System.out.println(Flyable.MIN_SPEED);
 8         Plane plane = new Plane();
 9         plane.fly();
10     }
11 }
12 
13 interface Flyable{
14     //全局常量
15     public static final int MAX_SPEED = 7900;//第一宇宙速度
16     int MIN_SPEED = 1;//省略了public static final
17 
18     //抽象方法
19     public abstract void fly();
20     void stop();//省略了public abstract
21 
22 }
23 
24 interface Attackable{
25     void attack();
26 }
27 
28 class Plane implements Flyable{
29 
30     @Override
31     public void fly() {
32         System.out.println("飛機通過引擎起飛");
33     }
34 
35     @Override
36     public void stop() {
37         System.out.println("駕駛員減速停止");
38     }
39 
40 }
41 
42 class Bullet extends Object implements Flyable,Attackable{
43 
44     @Override
45     public void fly() {
46 
47     }
48 
49     @Override
50     public void stop() {
51 
52     }
53 
54     @Override
55     public void attack() {
56 
57     }
58 }
59 
60 interface AA{
61     void method1();
62 }
63 interface BB{
64     void method2();
65 }
66 interface CC extends AA,BB{
67 
68 }      
package com.fu.java2;
/**
 *接口的使用
 * 1.接口使用上也滿足多态性
 * 2.接口實際上就是定義了一種規範
 * 3.開發中,體會面向接口程式設計0
 *
 *
 */
public class USBTest {
    public static void main(String[] args) {
        Computer computer = new Computer();
        //1.建立了接口的非匿名實作類的非匿名對象
        Flash flash = new Flash();
        computer.transferDate(flash);

        //2.建立了接口的非匿名實作類的匿名對象
        computer.transferDate(new Printer());

        //3.建立了接口的匿名實作類的非匿名對象
        USB phone = new USB() {
            @Override
            public void start() {
                System.out.println("手機開始工作");
            }

            @Override
            public void stop() {
                System.out.println("手機結束工作");
            }
        };
        computer.transferDate(phone);

        //4.建立了接口的匿名實作類的匿名對象
        computer.transferDate(new USB() {
            @Override
            public void start() {
                System.out.println("MP3開始工作");
            }

            @Override
            public void stop() {
                System.out.println("MP3手機結束工作");
            }
        });
    }
}

class Computer{
    public void transferDate(USB usb){// USB usb = new Flash();
        usb.start();
        System.out.println("具體的傳輸資料的細節");
        usb.stop();

    }
}

interface USB{
    //常量:定義了長、寬、最大最小的傳輸速度等

    void start();
    void stop();
}

class Flash implements USB{

    @Override
    public void start() {
        System.out.println("U盤開啟工作");
    }

    @Override
    public void stop() {
        System.out.println("U盤結束工作");
    }
}

class Printer implements USB{

    @Override
    public void start() {
        System.out.println("列印機開啟工作");
    }

    @Override
    public void stop() {
        System.out.println("列印機結束工作");
    }
}      

此為本人學習筆記,若有錯誤,請不吝賜教