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的