文章出處
文章列表
構造器
在我們初始化對象時,如果希望設置一些默認值,那么就可以使用構造器,在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,又或者當前對象被其他對象所覆蓋,那么它就會變成垃圾,會被垃圾收集器所回收。
文章列表
全站熱搜