面向對象03

1.static:靜態的

靜態不能直接調用非靜態,非靜態可以調用靜態

   1)靜態變量:對象共有的屬性可以定義爲靜態

      1.1)由static修飾

      1.2)屬於類的,存在方法區中,只有一份,隨着類加載而使用

      1.3)常常通過類名.來訪問

      1.4)何時用:所有對象的數據一樣時使用

   2)靜態方法:

       2.1)由static修飾

       2.2)屬於類的,存在方法區中,只有一份

       2.3)常常通過類名.來訪問

       2.4)沒有隱式的this傳遞

                靜態方法中不能直接訪問實例成員

       2.5)何時用:方法的操作僅與參數相關而與對象無關

   3)靜態塊:

       3.1)由static修飾

       3.2)屬於類的,類被加載期間自動執行

               類只被加載一次,所以靜態塊也只執行一次

       3.3)何時用:常常用於加載/初始化靜態資源(圖片、音頻、視頻)

2.final:不能變

   1)修飾變量:變量存儲的地址不能被改變

   2)修飾方法:方法不能被重寫

   3)修飾類:類不能被繼承

3.static final常量:

   1)必須聲明同時初始化

   2)不能改變,通過類名點來訪問

   3)建議:常量名所有字母都大寫

   4)在編譯時被直接替換爲具體的值,效率高

4.抽象方法:

   1)由abstract修飾

   2)只有方法的定義,沒有方法的實現(沒有大括號)

        abstract void eat();

5.抽象類:

   1)由abstract修飾

   2)包含抽象方法的類必須是抽象類,一個類中如果包含抽象方法,該類應用abstract關鍵字聲明爲抽象類。

        不包含抽象方法的類也可以聲明爲抽象類

        如果一個類繼承了抽象類,必須重寫其抽象方法

        (除非該類也聲明爲抽象類)。

   3)抽象類不能被實例化(不能new對象)

   4)抽象類是需要被繼承的,子類:

        4.1)子類重寫所有抽象方法---常用

        4.2)子類也聲明爲抽象類-----不常用

  5)抽象類的意義:

        5.1)包含公共的屬性和行爲,被子類所共享--代碼的重用

        5.2)爲所有子類提供一種統一的類型--向上造型

        5.3)包含抽象方法:爲所有子類提供一個統一的入口

                 子類有不同的實現

6.接口:

  1)是一個標準、規範

       遵守了這個標準,就能幹某件事

  2)由interface定義

  3)只能包含常量和抽象方法(接口是抽象類)

  4)接口不能被實例化

  5)接口是需要被實現的/繼承的,實現類/子類:

       必須重寫接口中的所有抽象方法(被重寫的方法

       必須被public修飾)

  6)一個類可以實現多個接口,用逗號分隔,

       若又繼承又實現時,應先繼承extends後實現implements

  7)接口可以繼承接口

             類對類--------單繼承

             接口對接口----多繼承

             類和接口------多實現

7.設計原則:

1.將公共的屬性和行爲封裝到父類中

2.所有子類的行爲都一樣----普通方法

   所有子類的行爲不一樣----抽象方法

3.若符合既是也是原則時,使用接口;

   若方法是部分子類的共有行爲---接口

   若方法是所有子類的共有行爲---父類

8.多態

  1)意義:

       1.1)同一類型的引用指向不同的對象時,有不同的實現  

                -----行爲的多態:cut(),run()

       1.2)同一對象被造型爲不同的類型時,有不同的功能

                -----對象的多態:水,我

  2)向上造型:小到大

       (子類造型爲父類,父型引用指向子類對象)

       2.1)父類型的引用指向子類的對象

       2.2)能造型成的類型有:

                    父類型、實現的接口

       2.3)能點出來什麼,看引用的類型

  3)強制類型轉換,成功的條件:

       3.1)引用所指向的對象,就是該類型

       3.2)引用所指向的對象,實現了該接口

         Aoo o1 = new Boo();//向上造型

         Boo o2 = (Boo) o1;//符合條件1

  4)建議強轉之前通過instanceof來判斷引用是否是某種類型

        instanceof返回boolean結果

        強轉成功的條件就是它爲true的條件

       System.out.println(o1 instanceof Boo);//true

9.內部類:

  1)成員內部類:不太常用

    1.1)類中套類,外面的叫外部類,裏面的叫內部類

    1.2)內部類通常只服務於外部類,對外不具備可見性

    1.3)內部類對象通常是在外部類中創建的

    1.4)內部類中可以直接訪問外部類的成員(包括私有的)

            內部類中有個隱式的引用指向創建它的外部類

                語法:外部類名.this.

  2)匿名內部類:常用

    2.1)如果想創建一個類的對象,並且對象只被創建一次,

            此時該類不必命名,稱爲匿名內部類。

    2.2)在匿名內部類中訪問外部的數據,該數據必須是final的

 

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