文章出處

構造器

在我們初始化對象時,如果希望設置一些默認值,那么就可以使用構造器,在Java中,構造器使用和類同名的名字且沒有返回值,如下

class Test{
    private String name;
    Test(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
}

public class app {
    public static void main(String[] args){
        Test test = new Test("小王");
        String n = test.getName();
        System.out.println(n);
    }
}

// 小王

并且可以發現這個構造器是在new的時候執行的。如果是繼承至某個父類,那么我們可以在子類中調用super來手動執行父類中的構造器。

class Test{
    private String name;
    Test(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
}

class Test2 extends Test{
    Test2(String n){
        super(n);
    }
}

public class app {
    public static void main(String[] args){
        Test2 test = new Test2("老王");
        String n = test.getName();
        System.out.println(n);
    }
}

// 老王

前面之所以說是手動是因為,就算你不去調用父類的構造器,它還是會被執行,只是它執行的是沒有參數的構造器。我們不妨來看看下面這段代碼

class Test{
    Test(){
        System.out.println("Test");
    }
}

class Test2 extends Test{
    Test2(){
        System.out.println("Test2");
    }
}

public class app {
    public static void main(String[] args){
        Test2 test = new Test2();
    }
}

// Test
// Test2

不竟程序自動調用了父類的構造器,而且還比子類構造器先執行,之所以父類的構造器先執行是有原因的,你想啊,子類往往需要用到父類中的一些變量或方法,如果不先初始化父類中的構造器,那么肯定就會出現一些問題。

垃圾回收

我們知道一個方法,可以無數次的被調用,因此如果沒有一個合理的規范,那么每次執行都會加大內存的消耗,而且有些方法執行完畢以后就沒有任何意義了,因此一些語言中加入了垃圾回收,對于一些沒有用處的進行回收,當然垃圾回收不僅僅針對方法。

但是話說回來你也不能亂回收對吧,得有一個規范,而這個規范就是,如果一個對象沒有被引用,或被設置成null,又或者當前對象被其他對象所覆蓋,那么它就會變成垃圾,會被垃圾收集器所回收。


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()