java初始化例子_Java 非静态初始化的例子
在繼承關系中,靜態初始化、非靜態初始化和構造函數的執行順序
public class ExA {
static {
System.out.println("父類--靜態代碼塊");
}
public ExA() {
System.out.println("父類--構造函數");
}
{
//非靜態代碼塊
System.out.println("父類--非靜態代碼塊");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子類--靜態代碼塊");
}
{
//非靜態代碼塊
System.out.println("子類--非靜態代碼塊");
}
public ExB() {
System.out.println("子類--構造函數");
}
}
執行結果:
父類--靜態代碼塊
子類--靜態代碼塊
父類--非靜態代碼塊
父類--構造函數
子類--非靜態代碼塊
子類--構造函數
從上邊的例子我們可以得出非靜態代碼塊的初始化順序是在靜態代碼塊的初始化之后。
下邊我們再來看另一個例子:
class Mug{
public Mug(int marker) {
System.out.println("Mug("+marker+")");
}
void f(int marker){
System.out.println("f("+marker+")");
}
}
public class Mugs {
Mug mug1;
Mug mug2;
{
//非靜態代碼塊
mug1 = new Mug(1);
mug2 = new Mug(2);
System.out.println("mug1 & mug2 initialized");
}
Mugs(){
System.out.println("Mugs()");
}
Mugs(int i){
System.out.println("Mugs(int i)");
}
public static void main(String[] args) {
System.out.println("Inside main()");
//首先執行Mugs類中非靜態代碼塊,創建兩個對象。然后執行無參構造函數
new Mugs();
System.out.println("new Mugs() completed");
//再執行Mugs類中非靜態代碼塊,這也是和靜態代碼塊只初始化一次的不同之后,其次調用有參構造函數
new Mugs(1);
System.out.println("new Mugs(1) completed");
}
}
以上就是Java 非靜態初始化的例子的詳細內容,更多關于Java 非靜態初始化的資料請關注聚米學院其它相關文章!
總結
以上是生活随笔為你收集整理的java初始化例子_Java 非静态初始化的例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java高次方数尾数输出_C语言求高次方
- 下一篇: php swoole编译,php+swo