Java中的繼承與靜態static等的執行先後順序的面試題
繼承與static
面試題目如下:請寫出程式執行完成之後的結果。
package extend;
public class X {
Y y=new Y();
static{
tln("tttt");
}
X(){
tln("X");
}
public static void main(String[] args) {
new Z();
}
}
class Y{
Y(){
tln("Y");
}
}
class Z extends X{
Y y=new Y();
static{
tln("tt");
}
Z(){
tln("Z");
}
}
先不告訴最後結果,我們先來分析下。一步一步推出結果。
1.首先分析一段程式的執行後的結果,我們得先找到程式的入口,然後才能著手分析。
也就是main()方法。
2.我們發現main()方法在X類中,要執行main()方法,還得先將X類載入到記憶體中。
3.X類載入完成後,會做什麼事情呢?別急,先來看看static的'作用,不知道吧。告訴你:static就是在類被第一次載入的時候執行,以後就不再執行。
4.知道了static的作用,那麼X類被載入,那麼就會先執行X類的靜態屬性和靜態語句塊(static),執行先後順序看誰在前面就先執行誰。只在此時執行,以後都不會。
5.所以一個輸出結果為tttt,沒問題了吧。
6.X類的static語句塊執行完了,就該執行main()方法啦。
Z();此方法被執行。
8.既然new Z();那麼Z類就要被載入。因為Z類繼承X類。所以必須先載入X類才行。因為X類已經被載入。所以此時不用再載入X類了。Z類載入好了就要執行Z類的static語句塊
9.那麼就會打印出tt了吧。
10.都加在完後就要例項化物件了。
11.例項化Z之前,還得先例項化X對吧。因為子類的構造方法都會呼叫父類的構造方法。
12.那就先例項化X類吧。
13.執行X方法前還得先初始化對不。也就是獲取所有屬性。那麼X類的屬性Y就會獲取。
14.即X類的Y y=new Y();要被執行。也就是會列印Y。
15.接著執行tln("X");
16.然後就是執行Z的構造方法
17.同樣先獲取Z的屬性Y y=new Y();列印Y。
18.再執行tln("Z");
整個過程就是這樣了。現在知道結果了吧:
tttt
tt
Y
X
Y
Z
記住,面試有可能會標出一些語句的,讓你選擇這些語句的執行順序。不過只要知道原理,就沒什麼難的了。
-
播音主持面試介紹
播音主持面試介紹1各位老師好!我是張莉,來自景色神祕的湘西,宋祖英的故鄉——古丈,家鄉的水孕育了我溫柔善良的'本性,家鄉的山教會了我百折不撓的精神。在嘹亮的山歌裡出生,在鏗鏘的鼓聲中成長,作為一名土生土長的土家女孩,我熱愛自己的家鄉,但我更渴望看到外面的世界...
-
行政面試自我評價(5篇)
無論是身處學校還是步入社會,我們會經常用到自我評價,自我評價是人的自我概念的重要內容之一。寫自我評價的注意事項有很多,你確定會寫嗎?下面是小編精心整理的行政面試自我評價,歡迎閱讀與收藏。行政面試自我評價1本人從小培養了吃苦耐勞、誠信守則、積極進取的精...
-
面試申請書
在這個高速發展的時代,申請書使用的次數愈發增長,我們在寫申請書的時候要注意態度要誠懇、樸實。你還在為寫申請書而苦惱嗎?以下是小編整理的面試申請書,希望能夠幫助到大家。面試申請書1尊敬的各位學生會的老師、學生會的主席和各位部長:你們好,此刻我萬分榮幸,站在...
-
【薦】面試自我評價
在平時的學習、工作或生活中,我們經常會被要求寫一份自我評價,自我評價是個人對自己思想、願望、行為和個性特點的判斷和評價。那麼你有了解過自我評價嗎?以下是小編收集整理的面試自我評價,歡迎閱讀,希望大家能夠喜歡。面試自我評價1【財務面試自我評價範例一】具...