day07 擴展

1.適配器設計模式

設計模式:就是解決問題的方案。遇到相同問題按照這種設計模式思想實現即可。在java中有23種設計模式。

適配器設計模式:adapter 我們電腦的電源。 起到一個轉換作用。

package com.itheima.sh.adapter_01;

public interface Inter {
    //定義抽象方法
    void show1();
    void show2();
    void show3();
    void show4();
}

package com.itheima.sh.adapter_01;
/*
    適配器類:最好是抽象類,防止創建Adapter類的對象。
    在 java中一個抽象類中是可以沒有抽象方法的

 */
public abstract class Adapter implements Inter {

    @Override
    public void show1() {
    }

    @Override
    public void show2() {
    }

    @Override
    public void show3() {
    }

    @Override
    public void show4() {
    }
}

package com.itheima.sh.adapter_01;
/*
     需求:我想在實現類InterImpl2只實現show1和show3方法
 */
public class InterImpl2 extends Adapter {
    @Override
    public void show1() {
        System.out.println("show1....");
    }

    @Override
    public void show3() {
        System.out.println("show3....");
    }
}

package com.itheima.sh.adapter_01;
/*
    ctrl+o :重寫父類的所有方法
    ctrl+i:重寫父類或者父接口中的抽象方法
    需求:我想在實現類InterImpl只實現show1和show3方法,對於接口
    Inter中的其他方法我們不想實現,怎麼辦?
    我們可以使用適配器設計模式的思想來實現:
        如果一個接口中含有多個接口,而對於某個實現類只想實現部分接口,此時
        我們可以在定義一箇中間類(適配器類)來實現該接口,然後在適配器類中
        實現接口中的所有方法,並且在適配器類中的所有方法的方法體不用書寫任何內容,
        讓某個類來繼承這個適配器類即可,對於適配器的子類想用哪個方法直接重寫哪個方法
 */
public class InterImpl implements Inter {
    @Override
    public void show1() {

    }

    @Override
    public void show2() {

    }

    @Override
    public void show3() {

    }

    @Override
    public void show4() {

    }
}

測試類:

package com.itheima.sh.adapter_01;

public class Test01 {
    public static void main(String[] args) {
        //創建子類對象
        InterImpl2 ip = new InterImpl2();
        ip.show1();
        ip.show3();
    }
}

小結:

1.適配器設計模式:定義一個適配器類實現某個接口實現該接口中的所有的抽象方法,然後讓其他具體某個類來繼承適配器類繼承,想用哪個方法直接重寫哪個方法。

2.適配器類屬於抽象類

ctrl+o :重寫父類的所有方法
ctrl+i:重寫父類或者父接口中的抽象方法

2.bt面試題

package com.itheima.sh.face_to_face_02;

public class Demo2 {
    public static int k = 0;
    public static Demo2 t1 = new Demo2("t1");
    public static Demo2 t2 = new Demo2("t2");
    public static int i = print("i");
    public static int j = print("j");
    public static int n = 99;

    {
        print("constructor code");
    }
    static {
        print("static code");
    }
    public static int print(String s) {
        System.out.println("i="+i +"   "+s+ "  k=" + k + "  n=" + n + "   j=" + j);
        ++i;
        ++k;
        ++n;
        return i;
    }
    public Demo2(String string) {

        print(string);
    }
    //Demo2.main(new String[0]) 底層調用main方法
    public static void main(String[] args) {
        Demo2 d=new Demo2("T");
    }
}

在這裏插入圖片描述

3.二進制和十進制之間的轉換

計算機中的數據不同於人們生活中的數據,人們生活採用十進制數,而計算機中全部採用二進制數表示,它只包含0、1兩個數,逢二進一,1+1=10。每一個0或者每一個1,叫做一個bit(比特)。

下面瞭解一下十進制和二進制數據之間的轉換計算。

  • **十進制數據轉成二進制數據:**使用短除法。使用短除法對2整除,取餘數,一直除到商爲0時,倒着獲取所有的餘數。然後將獲取的餘數按獲取的順序組合到一起。使用除以2獲取餘數的方式,

    注意:獲取餘數是從下往上倒着獲取。

在這裏插入圖片描述

  • **二進制數據轉成十進制數據:**使用乘法,從右邊開始當前位數的數字乘以2的(位數-1)次方(次冪),然後將各個相乘的數相加的結果就是當前2進制轉化爲十進制的結果。

在這裏插入圖片描述

  • **簡化版方式解決十進制和二進制之間的轉換:**使用8421編碼的方式

在這裏插入圖片描述

在這裏插入圖片描述

小貼士:

二進制數系統中,每個0或1就是一個位,叫做bit(比特)。

計算機底層都是二進制:0 1

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章