final: 終態的意思 不可變
可以修飾成員變量、成員方法
修飾類:
格式:
public final class 類名{
}
例子:public final class string
被final修飾的類,不能被繼承,但是該類可以繼承別的類
修飾方法:
格式:
修飾符 final 返回值類型 方法名(參數類型 參數名,..){
}
被final修飾的方法不能被重寫
修飾變量:
- 局部變量:被final修飾的變量會變成一個常量,只能賦值一次
格式:- final 數據類型 變量名 = 值;
- final 數據類型 變量名;變量名 = 值;
- 成員變量:被final修飾的成員變量會變成一個常量,只能賦值一次
- 顯示賦值:final 數據類型 變量名 = 值;
- 構造方法賦值:必須保證所有構造方法都會給該常量賦值
- 常量規範:一般常量名都是全部大寫
權限修飾符:
- public:公共的(整個項目)
- protected:受保護的(本類和子類)
- default:默認的(同一個包)
- private:私有的 (本類)
publIc > protected > default > private
public 具有最大權限,private則是最小權限
編寫代碼時,如果沒有特殊考慮,建議這樣使用權限:
- 成員變量使用private,隱藏細節
- 構造方法使用public,方便創建對象
- 成員方法使用public,方便調用方法
- 不加權限修飾符,其訪問能力與default修飾符相同
內部類:
概述:類A中包含B 類A就是外部類 類B就是內部類
成員內部類:定義在類中方法外的類
格式:
public class 外部類名{
public class 內部類名{
}
}
訪問特點:
- 內部類可以直接訪問外部類的成員,包括私有成員
- 外部類要訪問內部類的成員,必須要建立內部類的對象
創建內部類對象的格式:
- 外部類名.內部類名 對象名 = new 外部類名().new 內部類名()
- 內部類訪問外部類中的成員變量
- 外部類名.this.變量名
內部類仍是一個獨立的類,在編譯之後會內部類會被編譯成獨立的.class文件,但是前面冠以外部類的類名和&符合
比如:Person$Heart.class
匿名內部類(重點)
本質:繼承了一個類的子類(實現了一個接口的實現類) 的匿名對象
繼承了一個類的匿名子類的對象
匿名內部類必須繼承一個父類或者實現一個父接口。
匿名內部類可以作爲抽象類的匿名對象,也可以作爲接口的匿名對象
格式:
new 類名\接口名(){
實現抽象方法
};
例如:new Animal(){
@Override
public void eat(){
System.out.println("匿名內部類的eat方法");
}
};
引用類型用法的總結:
數組作爲方法的參數
數組作爲方法的返回值
數組作爲類的成員變量
類作爲方法的參數
類作爲方法的返回值
類作爲類的成員變量
接口作爲方法的參數 可以接收該接口的所有實現類的對象
接口作爲方法的返回值 可以返回改接口的所有實現類的值
接口作爲類的成員變量
String[] arr;//成員變量 數組作爲類的成員變量
String name;//類作爲類的成員變量
A a;//接口作爲類的成員變量
public static void main(String[] args){
}
枚舉:enumeration
概述:枚舉也是一種引用數據類型
作用:其實就是用來儲存固定的值
格式:
public enum 枚舉名{
枚舉值1,
枚舉值2,
枚舉值3,
...
}
使用:枚舉名.枚舉值