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我是xx學院日語系的應屆畢業生,我叫,我是上海人。私は申します.上海に生まれて.今年x學院に卒業しました、専門は日本語です.我的興趣是上網瀏覽信息,聽音樂。趣味はインターネット、音楽です性格樂觀開朗,誠實,有責任心,適應能力較強。性格は明る...
-
銀行面試介紹
銀行面試介紹1各位考官:通過考試,今天,我以本崗位筆試第x的成績進入了面試。對我來説,這次工作機會顯得尤為珍貴。我叫,今年27歲。x年7月我從xx學院系畢業。由於原因,使我與"太陽底下最光輝的職業"失之交臂。幸好,當時(原因),經人介紹,我在x單位有了工作經歷。回想起...
-
(優)面試邀請函
邀請函書寫應該簡要精練,大方得體,首尾呼應。在我們平凡的日常裏,邀請函在活動中的使用越來越廣泛,一般邀請函是怎麼起草的呢?以下是小編精心整理的面試邀請函,歡迎大家借鑑與參考,希望對大家有所幫助。面試邀請函1尊敬的用人單位:衷心感謝貴單位長期以來對我校畢業生...
-
面試時的自我評價(彙編15篇)
無論是身處學校還是步入社會,我們最熟悉的就是自我評價了,自我評價是自我教育的重要條件。你知道自我評價怎樣寫才規範嗎?以下是小編精心整理的面試時的自我評價,僅供參考,歡迎大家閲讀。面試時的自我評價1個人簡歷中的自我評價一:有充滿激情的工作態度,能夠在沒有監...