<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • java什么是接口回調(java接口的作用和意義)


    前言

    接口是Java中的一個重要的類型,實際項目開發中會大量使用到接口,也稱為:面向接口編程,本章將詳細介紹接口的概念和使用以及內部類。

    接口

    接口是什么

    生活中的接口如電腦上的USB接口,規范了接口的形狀、尺寸等,只要符合該規范的設備就可以連接上去。

    Java面向對象編程的接口和內部類

    程序中的接口是一套規范,規定了方法的定義,只要是實現了該接口的類必須按照接口的規范來定義。

    使用接口

    定義接口的語法:

    public interface 接口名{
    	靜態常量的定義;
    	方法的定義;
    }

    定義接口要注意:

    1. 方法是abstract的,不能實現
    2. 定義的屬性會自動轉變為靜態常量
    3. 方法只能是public的,默認是public

    實現接口

    public class 類名 implements 接口名{
    	具體方法的實現
    }

    實現接口要注意:

    1. 必須實現所有接口中的方法
    2. 方法必須和接口中定義的完全一致
    3. 方法必須是public的
    4. 一個類可以實現多個接口
    5. 一個類可以繼承類同時實現接口
    class 類名 extends 父類 implements 接口{
    }
    1. 接口可以繼承接口,實現類必須實現所有的方法
    interface A{
    	void testA();
    }
    //接口之間的繼承
    interface B extends A{
    	void testB();
    }
    class C implements B{
    	public void testA() {
    	}
    	public void testB() {
    	}
    }

    接口在開發中的意義

    1. 為類的實現制定一套規范
    2. 把設計和實現分開

    default關鍵字

    Java1.8的新特性,被default定義的方法可以有默認的實現。

    public interface Person {
    	//給接口方法默認的實現
    	default void eat(){
    		System.out.println("在吃飯?。?);
    	}
    	void walk();
    }

    實現類不強制要求實現帶default的方法。

    接口與抽象類的異同

    接口和抽象類的區別是常見的面試題相同點:

    1. 都可能存在沒有實現的方法
    2. 都不能實例化

    不同點:

    1. 抽象類是單一繼承,類可以實現多個接口
    2. 接口不能定義構造方法
    3. 接口中的方法只能是public,抽象類可以有各種訪問類型的方法。
    4. 接口中只能定義靜態常量,抽象類可以定義普通的成員變量。
    5. 接口中的抽象方法不用加abstract,抽象類必須加。

    內部類

    內部類就是在類里面定義的類。Java的內部類包含:

    • 成員內部類
    • 靜態內部類
    • 局部內部類
    • 匿名內部類

    成員內部類

    和成員變量(屬性)、成員方法同級的,都是屬于某一個對象所有的。語法:

    class 外部類{
    	class 內部類{
    	...
    	}
    }

    特點:

    • 一般只在外部類的里面使用
    • 成員內部類和類的屬性和方法同一級別。
    • 屬于類的對象,在創建每個對象時加載到內存

    靜態內部類

    成員內部類加上static,就是靜態內部類語法:

    public class 外部類{
    	static class 內部類{
    	}
    }

    和成員內部類的區別:

    1. 成員內部類屬于對象,靜態內部類屬于外部類
    2. 成員內部類每創建一個對象加載一次,靜態內部類和外部類一起加載
    3. 成員內部類能訪問外部類的所有成員,靜態內部類只能訪問外部類靜態的成員

    局部內部類

    在方法中定義的類,只能在當前方法中使用,方法調用時加載類到內存中。語法:

    class 外部類{
    	public void test(){
    		class 內部類{
    		
    		}
    		內部類 對象 = new 內部類();
    	}
    }

    匿名內部類

    一個沒有名字的內部類,創建類的同時創建了對象。應用場合:接口或抽象類的實現類只需要使用一次,代碼是一次性的。語法:

    new 接口/抽象類()
    {
    	實現方法
    };

    實現USB案例

    //Usb接口
    interface Usb{
    	void connect(); //連接
    	void charge(); //充電
    }
    //匿名內部類實現接口
    Usb usb = new Usb(){
    	public void connect(){
    		System.out.println("Test2測試連接");
    	}
    	public void charge(){
    		System.out.println("Test2測試充電");
    	}
    };
    usb .connect();
    usb .charge();

    和一般類的區別:

    1. 沒有名字
    2. 只能使用一次
    3. 沒有構造方法
    4. 不能定義靜態成員

    面試題:在?處填寫什么可以在控制臺輸出30,20,10。

    class Outer {
     	public int num = 10;
         class Inner {
             public int num = 20;
             public void show() {
                 int num = 30;
                 System.out.println(?);   	num
                 System.out.println(?);   	this.num
                 System.out.println(?); 	  Outer.this.num
             }
         }
     }
    
     class InnerClassTest {
         public static void main(String[] args) {
             Outer.Inner oi = new Outer().new Inner();
             oi.show();
         }    
     }   

    結束

    留兩個作業:

    1. 定義播放器接口,播放音樂方法;定義游戲機接口,玩游戲方法;定義電話類,有品牌和價格屬性,和打電話方法定義手機類繼承電話并實現播放器和游戲機接口
    2. 定義算術接口,分別定義加減乘除四個方法,每個方法都有兩個double參數,返回值為double。使用常規類和匿名內部類兩種方式實現接口。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费