一、源碼執行時的先後順序: 父類的靜態屬性和靜態塊(按照聲明順序) 本類的靜態屬性和靜態塊(按照聲明順序) main方法 父類的成員屬性和成員塊(按照聲明順序) 父類構造器 本類成員屬性和塊(按照聲明順序) 本類構造器 二、源碼執行需要註意: 在類載入的時候,靜態方法也已經載入了,但必須要通過類名或 ...
一、源碼執行時的先後順序:
- 父類的靜態屬性和靜態塊(按照聲明順序)
- 本類的靜態屬性和靜態塊(按照聲明順序)
- main方法
- 父類的成員屬性和成員塊(按照聲明順序)
- 父類構造器
- 本類成員屬性和塊(按照聲明順序)
- 本類構造器
二、源碼執行需要註意:
- 在類載入的時候,靜態方法也已經載入了,但必須要通過類名或者對象名才能訪問(相比於靜態代碼塊,靜態代碼塊是主動運行的,靜態方法是被動運行的)
- 當靜態載入中遇到需要載入非靜態的情況: 先載入非靜態再載入靜態(因為非靜態可以訪問靜態,而靜態不能訪問非靜態)
- 靜態代碼塊不能存在在任何方法體中
- 靜態代碼塊在類載入的時候就要運行
- 靜態代碼塊不能訪問成員屬性
- 靜態方法,實例方法只有在調用的時候才會去執行
- 成員屬性只能通過對象來調用,不能放在靜態代碼塊中
- 成員方法是通過載入類,然後new出實例化對象;通過對象運行這個方法