天天看點

Think in java(二)類的組合與繼承,super、protected、final關鍵字

1.toString()是什麼。

當編譯器需要一個String而你隻有一個對象時,這個方法會自動被調用,需要自己重寫這個方法。

2.一個包不同類可以使用多個main方法嗎?

可以,一個類可以調用另外一個類的main方法,語句是 類名.main(args)。

3.super關鍵字是什麼,有哪些用法?

super關鍵字是子類調用父類方法的關鍵字,主要有兩種用法,一種是調用父類的方法,用法是super.dosth(args),這樣用于重寫父類的方法中,如果不用super會産生遞歸;另一種用法是在子類的構造方法中調用父類的構造方法,子類的構造方法會自動調用父類的無參構造方法,當父類沒有無參構造方法必須使用super顯式的調用父類的有參構造方法。

4.名稱屏蔽是什麼,重載與覆寫有什麼差別?

子類可以用于父類完全相同的方法名稱,稱為名稱屏蔽。相當于子類引入了該方法的重載版本。而子類使用完全相同的方法簽名将覆寫父類的方法,另外可以用@Override關鍵字來保證覆寫,如果加了關鍵字而又不小心寫了父類方法的重載版本,編譯器會報錯。

5.複用類有哪些實作途徑,有什麼差別?

可以使用組合和繼承兩種方法實作類的複用,組合是has a的關系,繼承是is a的關系,相對于繼承來說,組合更加靈活,也更應該多用組合的方式來複用類。組合就是在一個類用建立另一個類的執行個體,并完成某些方法,而繼承與組合最大的差別在于,繼承可以實作向上轉型。

6.protected關鍵字是什麼?

private關鍵字隻有本類可以通路,而protected關鍵字可以讓該類的繼承類通路,并且同一包下其他類也可以通路。而預設通路類型是包通路(也成為friendly),隻有該包可以通路。但是一般不建議将可以讓子類通路的資料寫成protected,而是寫成private,然後将操作改資料的方法寫成protected。

7.final關鍵字是什麼?與static的差別是什麼?

final關鍵字有三種用法,分别是資料,方法和類。final資料如果是基本類型,則強調資料不可更改,如果不是基本類型,則強調該引用不可更改,但是引用的具體資料可以更改,另外final資料可以先聲明而不賦予初值,後續在初始化,這樣稱為空白final;final方法最初是為了提高效率,而現在不推薦這麼做,JVM本身會處理的更好,final參數是說隻能讀取參數,不能改變參數,private關鍵字下的方法被隐式的聲明為final;final類表示不能繼承,且其中的方法都是final的。

static關鍵字更強調在加載時隻初始化一次,而不是不可更改。

8.什麼時候加載類?

類的代碼在初次使用時被加載,初次使用有兩個含義,一個是建立一個新的對象時,這也是大部分的情況。另一個是初次使用該類中static方法時。

9.類與其繼承類的中初始化是一個什麼樣的順序?

運作一個類時,首先找到他的main方法,在運作這個main方法之前要加載該類,如果該類有父類,則首先加載其父類。加載完畢之後可以運作main方法,進行建立對象了。建立對象時首先建立父類對象,先初始化父類對象的執行個體變量,然後運作父類變量的構造方法,接着初始化子類中的執行個體變量,然後運作子類變量的構造方法。