Java 中的私有構造函數:用示例解釋用例
已發表: 2021-04-09目錄
介紹
Java 中的私有構造函數用於限制對象的創建。 它是用於靜態成員類的特殊實例構造函數。 如果構造函數被聲明為私有,那麼它的對像只能從聲明的類中訪問。 您不能從構造函數類外部訪問其對象。
私有構造函數用例
Java中的私有構造函數只能從類內部訪問。 您不能從任何其他類訪問私有構造函數。 如果對象尚未初始化,那麼您可以編寫一個公共函數來調用私人講師。 如果對像已經初始化,那麼您只能返回該對象的實例。 Java 中的私有構造函數有以下用例:
- 您可以將它與僅限靜態成員的類一起使用。
- 您可以將它與靜態實用程序或常量類一起使用。
- 您可以使用它來提供單例類。
- 您可以使用它來分配名稱,例如,使用工廠方法創建。
- 您可以使用它來防止子類化。
單例類
Java 中的私有構造函數用於創建單例類。 單例類是 Java 中將聲明的類的對像數限制為一個的類。 Java 中的私有構造函數確保一次只創建一個對象。 它將類實例限制在聲明的類中,這樣就不能在聲明的類之外創建任何類實例。 您可以在網絡和數據庫連接概念中使用單例類。
示例 1:以下示例演示Java 中的私有構造函數如何限制單例類中的對像數量。
導入java.io.*; 類新測試類 { 靜態 newTestClass 對象 = null; 公共int a = 20; 私人新測試類(){ } //我們創建了一個私有構造函數 靜態公共 newTestClass displayInstance() /** *displayInstance() 是我們將用來創建實例的公共方法。 *調用此方法從類外部訪問這些實例。 */ { 如果(對象 == 空) 對象 = 新的 newTestClass(); //創建單例類對象 返回對象; } } 公共類 SingletonClass { 公共靜態無效主要(字符串參數[]){ newTestClass instance1 = newTestClass.displayInstance(); //通過調用公共方法顯示單例類的實例 newTestClass instance2 = newTestClass.displayInstance(); //通過調用公共方法顯示單例類的實例 實例1.a = 實例1.a + 26; System.out.println(“創建的實例 1 具有以下值 = ” + instance1.a); System.out.println(“創建的實例 2 具有以下值 = ” + instance2.a); } } |
輸出
創建的實例 1 具有以下值 = 46 創建的實例 2 具有以下值 = 46 |
在上面的程序中,實例 2 的值會在我們更新 instance1 對象值時自動更新。 這個觀察表明 instance1 和 instance 2 都引用同一個對象。
示例 2:以下示例演示Java 中的私有構造函數如何確保一次創建的對像不超過一個。
// 用於單例類實現的 Java 程序 導入java.io.*; 公共類 newTestClass { 私有靜態 newTestClass var=null; 私人新測試類(){ //類內部可以訪問Private Constructor } 公共靜態 newTestClass testObject(){ // 此方法確保一次只創建一個對象 如果(變量==空){ var= 新的 newTestClass(); } 返回變量; } 公共無效顯示(){ System.out.println(“這是一個使用 Singleton 類的 Private 構造函數的例子。”); } 公共靜態無效主要(字符串參數[]){ newTestClass newObject= newTestClass.testObject(); newObject.display(); } } |
輸出
這是使用 Singleton 類的 Private 構造函數的示例。
示例 2: Java 中的 Private Constructor用於限制類實例的數量。
此示例演示如何通過將構造函數聲明為私有來限制類實例的數量。
公共類restrictInstanceCreationClass { 公共靜態無效主要(字符串[]參數){ 限制實例對象; 詮釋一個= 1; 而(a<=20) { obj = RestrictInstance.getLimInstance(); 一個++; } } } 類限制實例 { 公共靜態 int varCount = 0; /** *創建增加計數的私有構造函數 * 每次創建實例後的 varCount 變量 */ 私人限制實例(){ 變量計數++; System.out.println(“實例號” + varCount + ”已創建。”); }
公共靜態同步 RestrictInstance getLimInstance() { 如果(變量計數 <5){ 返回新的限制實例(); } System.out.println(“已達到最大實例限制。您不能再創建實例。”); System.gc(); 返回空值; } /** *刪除實例並減少計數 *varCount 變量的 */ 公共無效finalise() { System.out.println(“實例被刪除。”); 變量計數-; }} |
輸出
實例編號 1 已創建。 創建實例編號 2。 實例號 3 已創建。 實例號 4 已創建。 實例編號 5 已創建。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 實例被刪除。 實例被刪除。 實例被刪除。 實例被刪除。 已達到最大實例限制。 您不能再創建實例。 實例編號 1 已創建。 創建實例編號 2。 實例號 3 已創建。 實例號 4 已創建。 實例編號 5 已創建。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 已達到最大實例限制。 您不能再創建實例。 實例被刪除。 實例被刪除。 實例被刪除。 實例編號 1 已創建。 創建實例編號 2。 實例號 3 已創建。 實例號 4 已創建。 實例編號 5 已創建。 |
從世界頂級大學在線學習軟件課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
本文中使用的代碼僅用於說明目的。 您可以根據需要修改示例中給出的語句。 在這篇博客中,我們討論了Java 中的私有構造函數如何限制單例類中的對像數量。
您可以嘗試代碼來加強您的Java構造函數的知識。 如果您想深入了解 Java,請查看 upGrad Executive PG Program in Full Stack Development課程,該課程專為工作專業人士設計,以獲得該領域的專業知識。
什麼是編程中的構造函數?
編程中的構造函數是在初始化對象時自動調用的方法。 構造函數的目的是初始化對象。 構造函數應該始終是公共的,並且它們被聲明為沒有任何返回類型。 構造函數用於初始化對象並執行其他只能完成一次的任務。 構造函數還用於執行類的初始化,即執行創建類的任務。
Java中的構造函數有哪些類型?
Java中有五種構造函數。 它們是: 無參數構造函數:它有一個默認實現,在類加載到內存時執行。 沒有無參數構造函數的類必須聲明為 final。 默認構造函數:這個構造函數是在用 Java 編寫類時創建的,用於將類的所有變量(屬性)初始化為其默認值(零或空)。 參數化構造函數:這個構造函數用於從一些值初始化一些變量。 無返回值的構造函數:用於從一些值初始化一些變量。 帶返回值的構造函數:用於從一些值初始化一些變量,並返回一個值。
Java中的私有構造函數是什麼?
私有構造函數可用於創建不可變類。 在不使用私有構造函數的情況下,我們可以通過聲明類 final 並將所有屬性創建為 final 來創建不可變類(例如 private final String name;)。 類的客戶端對像不能直接調用私有構造函數。 它們只能由類的方法在內部調用(甚至是私有的)。 您可以擁有一個帶有一個或多個參數的私有構造函數。 構造函數的返回類型不能是原始布爾值。 它可以是字符串或類。