亚洲高清vr播放在线观看,欧美亚洲精品免费,欧美日韩天堂在线视频,午夜福利小视频

      學(xué)習(xí)啦 > 知識大全 > 知識百科 > 百科知識 > java什么是構(gòu)造函數(shù)

      java什么是構(gòu)造函數(shù)

      時間: 歐東艷656 分享

      java什么是構(gòu)造函數(shù)

        構(gòu)造函數(shù) ,是一種特殊的方法。主要用來在創(chuàng)建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創(chuàng)建對象的語句中。特別的一個類可以有多個構(gòu)造函數(shù) ,可根據(jù)其參數(shù)個數(shù)的不同或參數(shù)類型的不同來區(qū)分它們 即構(gòu)造函數(shù)的重載。

        Java 在創(chuàng)建對象的時候會要執(zhí)行它的構(gòu)造函數(shù)。不僅如此,Java 還要執(zhí)行父類的構(gòu)造函數(shù),往上一級一級直到?jīng)]有父類為止。對于初學(xué)者來說,有三個問題不容易搞懂:

        1、父類的構(gòu)造函數(shù)是否一定會執(zhí)行?

        2、是先執(zhí)行子類的構(gòu)造函數(shù)還是先執(zhí)行父類的構(gòu)造函數(shù)?

        3、如果父類有多個構(gòu)造函數(shù),那么 Java 會選擇哪一個?

        - 父類的構(gòu)造函數(shù)是否一定會執(zhí)行?

        是的,父類的構(gòu)造函數(shù)一定會執(zhí)行。所以如果某個類的層次很深,那么它創(chuàng)建對象時就會要執(zhí)行一大堆的構(gòu)造函數(shù)。

        - 是先執(zhí)行子類的構(gòu)造函數(shù)還是先執(zhí)行父類的構(gòu)造函數(shù)?

        Java 會順著繼承結(jié)構(gòu)往上一直找到 Object,然后從 Object 開始往下依次執(zhí)行構(gòu)造函數(shù)。先執(zhí)行父類的構(gòu)造函數(shù),那么子類的構(gòu)造函數(shù)執(zhí)行的時候就不需要擔(dān)心父類的成員是否初始化好了。

        - 如果父類有多個構(gòu)造函數(shù),那么 Java 會選擇哪一個?

        如果父類有多個構(gòu)造函數(shù),那么子類可以在構(gòu)造函數(shù)中選擇其中一個(且最多只能選擇一個)來執(zhí)行。如果子類沒有選擇,那么 Java 將會執(zhí)行父類的缺省構(gòu)造函數(shù)。下面是一個例子:

        父類:

        public class SuperClass {

        public SuperClass() {

        System.out.println("super class constructed.");

        }

        public SuperClass(String name) {

        System.out.println("super class constructed with name: " + name);

        }

        }

        子類:

        public class SubClass extends SuperClass {

        public SubClass() {

        System.out.println("sub class constructed.");

        }

        public SubClass(String name) {

        super(name);

        System.out.println("sub class constructed with name: " + name);

        }

        public static void main(String[] args) {

        new SubClass();

        new SubClass("world");

        }

        }

        執(zhí)行結(jié)果:

        super class constructed.

        sub class constructed.

        super class constructed with name: world

        sub class constructed with name: world

        如果去除SubClass中的super(name)的話,輸出將是:

        super class constructed.

        sub class constructed.

        sub class constructed with name: world

        這說明創(chuàng)建子類object時只有默認(rèn)constructed會向下執(zhí)行/初始化,其他constructed需要使用super關(guān)鍵字才可以實現(xiàn)

      245767