高級java

高級java

修飾符:
static修飾符
static修飾符所修飾的內容屬於類不屬於對象,他被所有由這個類產生的對象共享
static所修飾的內容在執行類加載的時候就會被加載到內存中,所以類加載完成後靜態的內容在內存中就已經存在了,而且類加載只會執行一次,靜態的內容也只會被加載一次。
靜態屬性:
類加載的時候靜態屬性就會加載,jvm會根據數據類型給初始值。
靜態方法
類加載的時候靜態方法就會加載因此靜態方法中是不能調用非靜態的內容,靜態加載的時候對象還沒開始構建,this super 也不能在靜態方法中使用
靜態代碼塊(就是在代碼塊前面加了static):
類加載的時候靜態代碼塊會被jvm執行從上往下一次執行,可以在靜態代碼塊中初始化靜態的屬性
代碼塊和靜態代碼塊的功能:

public calss Test{
		public static String namel
		public int age;
		static{
			name="lisi";
		}
		static {
			name="tom";
		}
		//代碼塊在構建對象的時候會被調用,子類顯示初始化數據的時間點和代碼塊之間的關係,繼承中
		{}
	}

創建對象的過程:
A extends B:
1,類加載,構建對象
2.jvm根據數據類型給屬性初始值
3.調用父類的代碼塊構造器(name)
4.將子類顯示初始化的屬性值替換掉jvm給的默認值
5.調用子類的代碼塊(name2)
6.調用子類的構造器
靜態導入
如果在一個類中我們需要大量的使用靜態方法很多次,一般情況下可以使用類名.方法名,或者我們可以使用靜態導入
import static 類的權限定名.靜態方法名
final修飾符
類:使用final修飾的類不能被繼承
屬性:使用final修飾的屬性被稱爲常量,使用之前必須顯示化進行賦值,一旦賦值就不能做修改
方法:可以被繼承使用,但不能被繼承

abstract修飾符
類:使用abstract修飾的類被稱爲抽象類,抽象類不能構建對象
抽象類中可以有具體的方法,也可以有抽象的方法,也可不包含抽象方法
抽象類中有自己的構造器,雖然不能直接構建對象,但是這個構造器可以將來被子類調用,用來初始化子類從父類中繼承的屬性
方法
使用abstract修飾的方式稱爲抽象方法,抽象方法只有方法的聲明沒有方法體
抽象方法必須位於抽象類中,但是抽象類中可以沒有抽象方法
抽象方法不能使用static修飾
抽象方法不能使用final修飾
重寫:父類中的抽象方法可以被子類重寫成抽象方法或非抽象方法,父類中的非抽象方法可以被子類重寫爲抽象方法
抽象類存在的目的就是爲了讓別的類繼承:
繼承:Java只能做單繼承
接口
使用interface聲明的類叫做接口
接口中可以有屬性,但是所有的屬性都是靜態常量,即使你不使用final static,默認情況下jvm也會幫我們加上
在這裏插入圖片描述
接口中可以有方法,但是所有的方法都是抽象方法
接口沒有構造器,使用接口不能直接構建對象,爲了讓其他的類實現接口中的抽象方法
一個類是可以同時實現多個接口中的方法,做實現的時候可以選擇讓實現類的接口中所有的方法都實現,或者是部分實現,如果是部分實現那麼這個實現類需要被抽象聲明

Java中的接口是可以繼承其他接口的,而且可以多繼承,接口不能直接繼承Java中的抽象類。
在這裏插入圖片描述
內部類
匿名內部類:
1.位置:類的內部方法的外部,也可以在方法的內部,可以使用static修飾也可以不使用static修飾
2.匿名內部類實際上在構建子類或者是接口的實現類的時候使用的最多。
父類類型/接口類型 對象名 = new 父類類型/接口類型(){
重寫或者實現接口中的方法
};
靜態內部類:
1.類的內部方法的外部使用static修飾
2.內部類中可以訪問外部類的靜態的內容,訪問外部類中的非靜態內容需要構建外部類的對象
3.外部類中不能訪問內部類中的內容,如果想訪問,內部類中靜態的內容需要使用內部類.屬性名/方法名
4.外部類.內部類 變量名 = new 外部類.內部類();
在這裏插入圖片描述
成員內部類:
1.類的內部方法的外部,不使用static修飾符修飾,在這個內部類可以聲明非靜態的屬性和方法
2.成員內部類可以直接訪問他所在的外部類中靜態和非靜態的所有的內容
3.外部類中不能直接訪問內部類中屬性和方法,如果需要,那麼需要構建內部類的對象來進行訪問
4.外部類.內部類 對象名 = new 外部類().new 內部類();
局部內部類:
1.方法的內部 局部內部類不能使用範圍修飾符也不能使用static修飾符,方法內部允許定義非靜態的屬性和方法
2.在實例方法中聲明的局部內部類訪問外部類中所有的靜態和非靜態的內容,同時也可以訪問它所在的方法使用final所修飾的局部變量
3.外部類訪問不到局部內部類
4.只有在這個局部內部類所在的方法中構建這個內部類的對象
局部內部類類名 對象名= new 局部內部類類名();

1.內部出現的位置
2.內部類能夠直接訪問外部類中的什麼內容
3.外部類直接訪問內部類的什麼內容
4.內部類對象的構建方式
包裝器類型

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