欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java私有構(gòu)造器使用方法示例

 更新時間:2017年09月13日 10:04:15   作者:elvalad  
這篇文章主要介紹了Java私有構(gòu)造器的含義、關(guān)鍵字,同時通過實例向大家展示其使用方法,需要的朋友可以參考下

構(gòu)造器作為Java類的一個特殊的成員同樣可以設(shè)置關(guān)鍵字來控制其訪問權(quán)限。在大多數(shù)情況下,我們一般把構(gòu)造器設(shè)置為公有成員,即public的,在默認(rèn)情況下,如果不寫任何關(guān)鍵字,其訪問權(quán)限也是public。這樣,在我們新建一個類的對象的時候,構(gòu)造器會創(chuàng)建對象后被自動調(diào)用,發(fā)生在其他類成員被設(shè)置為默認(rèn)初始值之后,當(dāng)然如果有字段初始器和初始化塊的話,構(gòu)造器的調(diào)用會發(fā)生在此之后。構(gòu)造器的主要作用是在new將對象的引用返回之前初始化對象。

言歸正傳,什么叫私有構(gòu)造器。所謂私有構(gòu)造器,就是用private關(guān)鍵字聲明的構(gòu)造器,即使用private關(guān)鍵字聲明的構(gòu)造函數(shù)。。與一般公有構(gòu)造器最大的區(qū)別在于,其訪問權(quán)限是private,于是它只能被包含它的類自身所訪問,而無法在類的外部調(diào)用,故而可以阻止對象的生成。所以,如果一個類只有一個私有構(gòu)造器,而沒有任何公有構(gòu)造器,是無法生成任何對象的。

由于類的構(gòu)造函數(shù)時私有的,所以此類不能被實例化,同時也不能被繼承?!禘ffective Java》第三條:用私有構(gòu)造器或者枚舉強化Singleton屬性。所謂Singleton屬性是指僅僅被實例化一次的類。第四條:通過私有構(gòu)造器強化不可實例化的能力。在Java中實現(xiàn)Singleton有兩種方式:

public class Elvis {
 public static final Elvis INSTANCE = new Elvis();
 private Elvis() {}
}

public class Elvis {
 private static final Elvis INSTANCE = new Elvis();
 private Elvis() {}
 public static Elvis getInstance() { return INSTANCE;}
}

方法一:私有構(gòu)造函數(shù)只能被調(diào)用一次,用來實例化公有的靜態(tài)final域Elvis.INSTANCE,一旦Elvis被實例化,只會存在一個Elvis實例(享有特權(quán)的客戶端可以借助AccessibleObject.setAccessible方法通過反射機制調(diào)用私有構(gòu)造器);

方法二:使用靜態(tài)方法getInstance返回對同一個對象的引用,永遠(yuǎn)不會創(chuàng)建其他Evlis實例。

為什么需要私有構(gòu)造器,如果類不能被實例化該怎么使用這個類的方法?

私有構(gòu)造器的存在可以讓某些類不能被實例化和子類化,這些類通常是一些工具類,例如java.lang.Math等,訪問這些類的方法我們可以定義公有的靜態(tài)方法來實現(xiàn),如A.methon()

public class A {
 private A() {}
 public static void methon() {}    
}

java.lang.Math中私有構(gòu)造器的使用,可以看到Math類被定義為final的,使用了private的構(gòu)造函數(shù),它的方法都是static的,所以調(diào)用其方法只需要Math.sin(x)即可:

public final class Math {
 private Math() {}
 public static final double E = 2.7182818284590452354;
 public static final double PI = 3.14159265358979323846;
 public static double sin(double a) {
  return StrictMath.sin(a); // default impl. delegates to StrictMath
 } 
 public static double cos(double a) {
  return StrictMath.cos(a); // default impl. delegates to StrictMath
 }
 public static double tan(double a) {
  return StrictMath.tan(a); // default impl. delegates to StrictMath
 }
 ......
 public static float scalb(float f, int scaleFactor) {
  return sun.misc.FpUtils.scalb(f, scaleFactor);
 }
}

希望本文所述Java編程私有構(gòu)造器的內(nèi)容對大家有所幫助!

相關(guān)文章

  • java生成圖片驗證碼示例程序

    java生成圖片驗證碼示例程序

    這篇文章主要介紹了java生成圖片驗證碼示例程序,大家參考使用吧
    2013-11-11
  • Java?深入探究講解簡單工廠模式

    Java?深入探究講解簡單工廠模式

    簡單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設(shè)計模式之一。簡單工廠模式是由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現(xiàn)
    2022-04-04
  • java實現(xiàn)二維數(shù)組轉(zhuǎn)置的方法示例

    java實現(xiàn)二維數(shù)組轉(zhuǎn)置的方法示例

    這篇文章主要介紹了java實現(xiàn)二維數(shù)組轉(zhuǎn)置的方法,結(jié)合實例形式詳細(xì)分析了java二維數(shù)組轉(zhuǎn)置的原理、實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • 詳談java編碼互轉(zhuǎn)(application/x-www-form-urlencoded)

    詳談java編碼互轉(zhuǎn)(application/x-www-form-urlencoded)

    下面小編就為大家?guī)硪黄斦刯ava編碼互轉(zhuǎn)(application/x-www-form-urlencoded)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 淺談SpringBoot集成Redis實現(xiàn)緩存處理(Spring AOP實現(xiàn))

    淺談SpringBoot集成Redis實現(xiàn)緩存處理(Spring AOP實現(xiàn))

    這篇文章主要介紹了淺談SpringBoot集成Redis實現(xiàn)緩存處理(Spring AOP實現(xiàn)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java實現(xiàn)批量查找與替換Excel文本的思路詳解

    Java實現(xiàn)批量查找與替換Excel文本的思路詳解

    在 Java 中,可以通過find和replace的方法來查找和替換單元格的數(shù)據(jù),下面小編將以Excel文件為例為大家介紹如何實現(xiàn)Excel文件內(nèi)容的批量替換,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Java讀取TXT文件內(nèi)容的方法

    Java讀取TXT文件內(nèi)容的方法

    本篇文章主要介紹了Java讀取TXT文件內(nèi)容的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java Pattern和Matcher字符匹配方式

    Java Pattern和Matcher字符匹配方式

    這篇文章主要介紹了Java Pattern和Matcher字符匹配方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java設(shè)計模式:組合模式

    Java設(shè)計模式:組合模式

    這篇文章主要介紹了快速理解Java設(shè)計模式中的組合模式,具有一定參考價值,需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-09-09
  • Java中轉(zhuǎn)換器設(shè)計模式深入講解

    Java中轉(zhuǎn)換器設(shè)計模式深入講解

    這篇文章主要給大家介紹了關(guān)于Java中轉(zhuǎn)換器設(shè)計模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論