• Java中的繼承與靜態static等的執行先后順序的面試題

    時間:2022-07-13 16:51:30 面試 我要投稿
    • 相關推薦

    Java中的繼承與靜態static等的執行先后順序的面試題

    繼承與static

    Java中的繼承與靜態static等的執行先后順序的面試題

    面試題目如下:請寫出程序執行完成之后的結果。

    package extend;

    public class X {
    Y y=new Y();
    static{
    System.out.println("tttt");
    }
    X(){
    System.out.println("X");
    }

    public static void main(String[] args) {
    new Z();

    }
    }

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

    class Z extends X{
    Y y=new Y();
    static{
    System.out.println("tt");
    }
    Z(){
    System.out.println("Z");
    }
    }

    先不告訴最后結果,我們先來分析下。一步一步推出結果。

    1.首先分析一段程序的執行后的結果,我們得先找到程序的入口,然后才能著手分析。

    也就是main()方法。

    2.我們發現main()方法在X類中,要執行main()方法,還得先將X類加載到內存中。

    3.X類加載完成后,會做什么事情呢?別急,先來看看static的作用,不知道吧。告訴你:static就是在類被第一次加載的時候執行,以后就不再執行。

    4.知道了static的作用,那么X類被加載,那么就會先執行X類的靜態屬性和靜態語句塊(static),執行先后順序看誰在前面就先執行誰。只在此時執行,以后都不會。

    5.所以一個輸出結果為tttt,沒問題了吧。

    6.X類的static語句塊執行完了,就該執行main()方法啦。

    7.new 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.接著執行System.out.println("X");
    16.然后就是執行Z的構造方法

    17.同樣先獲取Z的屬性Y y=new Y();打印Y。

    18.再執行System.out.println("Z");


    整個過程就是這樣了,F在知道結果了吧:

    tttt
    tt
    Y
    X
    Y
    Z

    記住,面試有可能會標出一些語句的,讓你選擇這些語句的執行順序。不過只要知道原理,就沒什么難的了。

    【Java中的繼承與靜態static等的執行先后順序的面試題】相關文章:

    Java面試題07-12

    JAVA題庫:JAVA面試題目整理07-11

    java面試題五07-11

    java 基礎面試題07-11

    華為Java面試題07-11

    華為的JAVA面試題07-11

    求java面試題07-11

    華為公司 java人員面試題07-11

    一道Java面試題,題目如下07-11

    經典Java面試題(絕版搞笑)篇,你笑了嗎?07-12

    黄频国产免费高清视频_富二代精品短视频在线_免费一级无码婬片aa_精品9E精品视频在线观看