在本文中,我們將討論構造函數(shù),如何創(chuàng)建我們自己的構造函數(shù),以及Java中的默認構造函數(shù)。
什么是構造函數(shù)?
作為基于類的面向?qū)ο缶幊绦g語,構造函數(shù)是用于初始化新創(chuàng)建的對象(類)的唯一方法。創(chuàng)建構造函數(shù)時必須遵循一些規(guī)則。這些規(guī)則包括:
構造函數(shù)的名稱必須與類名相同。
構造函數(shù)必須沒有返回類型。
在繼續(xù)之前,讓我們看看類在Java中的樣子:
上面的代碼顯示了一個名為 Student 的類,該類具有三個屬性 – 、 和 。我們將假設該類應該是注冊學生的樣本?;叵胍幌?,這三個屬性沒有任何值,因此沒有一個信息是硬編碼的。firstNamelastNameage
現(xiàn)在,我們將使用構造函數(shù)來創(chuàng)建對象的新實例。那是:Student
我們創(chuàng)建了一個構造函數(shù),用于初始化對象中定義的屬性。上面的代碼是無參數(shù)構造函數(shù)的示例?,F(xiàn)在讓我們看一個不同的例子:Student
現(xiàn)在我們已經(jīng)創(chuàng)建了一個參數(shù)化構造函數(shù)。參數(shù)化構造函數(shù)是使用參數(shù)/參數(shù)創(chuàng)建的構造函數(shù)。讓我們來分解一下。
我們創(chuàng)建了一個新的構造函數(shù),它接受三個參數(shù) - 兩個字符串和一個整數(shù)。
然后,我們將這些參數(shù)鏈接到我們在創(chuàng)建類時定義的屬性。現(xiàn)在,我們已經(jīng)使用構造函數(shù)初始化了 Student 對象。
最后,我們創(chuàng)建了 Student 對象的新實例,并傳入了我們的參數(shù)。我們能夠傳入這些參數(shù),因為我們已經(jīng)在構造函數(shù)中定義了它們。
我創(chuàng)建了一個包含三個參數(shù)的構造函數(shù),但您也可以創(chuàng)建單獨的構造函數(shù)來初始化每個屬性。
現(xiàn)在您已經(jīng)了解了 Java 中的構造函數(shù)是什么以及如何使用它,現(xiàn)在讓我們來看看默認構造函數(shù)。
什么是默認構造函數(shù)?
默認構造函數(shù)是由編譯器創(chuàng)建的構造函數(shù),如果我們不為類定義任何構造函數(shù)。下面是一個示例:
您能發(fā)現(xiàn)這與前面的兩個示例之間的區(qū)別嗎?請注意,在創(chuàng)建之前,我們沒有定義任何構造函數(shù)來初始化在類中創(chuàng)建的屬性。myStudent
這不會以我們的方式拋出錯誤。相反,編譯器將創(chuàng)建一個空構造函數(shù),但您不會在代碼中的任何位置看到此構造函數(shù) - 這發(fā)生在引擎蓋下。
當編譯器開始執(zhí)行其工作時,上面的代碼將如下所示:
很多人混淆了無參數(shù)構造函數(shù)的默認構造函數(shù),但它們在Java中并不相同。程序員創(chuàng)建的任何構造函數(shù)在 Java 中都不被視為默認構造函數(shù)。
在本文中,我們了解了什么是構造函數(shù),以及如何創(chuàng)建和使用它們來初始化我們的對象。
我們還討論了默認構造函數(shù)以及它們與無參數(shù)構造函數(shù)的不同之處。