最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

由于類的構(gòu)造函數(shù)時(shí)私有的,所以此類不能被實(shí)例化,同時(shí)也不能被繼承?!禘ffective Java》第三條:用私有構(gòu)造器或者枚舉強(qiáng)化Singleton屬性。所謂Singleton屬性是指僅僅被實(shí)例化一次的類。第四條:通過私有構(gòu)造器強(qiáng)化不可實(shí)例化的能力。在Java中實(shí)現(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)用一次,用來實(shí)例化公有的靜態(tài)final域Elvis.INSTANCE,一旦Elvis被實(shí)例化,只會(huì)存在一個(gè)Elvis實(shí)例(享有特權(quán)的客戶端可以借助AccessibleObject.setAccessible方法通過反射機(jī)制調(diào)用私有構(gòu)造器);

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

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

私有構(gòu)造器的存在可以讓某些類不能被實(shí)例化和子類化,這些類通常是一些工具類,例如java.lang.Math等,訪問這些類的方法我們可以定義公有的靜態(tài)方法來實(shí)現(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)容對(duì)大家有所幫助!

相關(guān)文章

  • 詳解SpringMVC解決跨域的兩種方案

    詳解SpringMVC解決跨域的兩種方案

    本篇文章主要介紹了詳解SpringMVC解決跨域的兩種方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • java IO流之轉(zhuǎn)換流的具體使用

    java IO流之轉(zhuǎn)換流的具體使用

    轉(zhuǎn)換流可以將一個(gè)字節(jié)流包裝成字符流,或者將一個(gè)字符流包裝成字節(jié)流,本文主要介紹了java IO流之轉(zhuǎn)換流的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • JavaScript中的closest方法示例詳解

    JavaScript中的closest方法示例詳解

    這篇文章主要介紹了JavaScript中closest方法的相關(guān)資料,closest()是JavaScript中的一個(gè)非常實(shí)用的?DOM?方法,用于查找與當(dāng)前元素匹配的最近的祖先元素,它支持?CSS?選擇器,可以應(yīng)用于事件委托、動(dòng)態(tài)內(nèi)容處理等場(chǎng)景,需要的朋友可以參考下
    2025-02-02
  • SpringBoot+Ant Design Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出功能方式

    SpringBoot+Ant Design Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出功能方式

    這篇文章主要介紹了SpringBoot+Ant Design Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出功能方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 使用Java發(fā)送帶附件的附件的示例

    使用Java發(fā)送帶附件的附件的示例

    這篇文章主要介紹了使用Java發(fā)送帶附件的附件的方法,使用到了JavaMail這個(gè)API,需要的朋友可以參考下
    2015-11-11
  • Idea安裝bpmn插件actiBPM的詳細(xì)過程(解決高版本無法安裝actiBPM插件)

    Idea安裝bpmn插件actiBPM的詳細(xì)過程(解決高版本無法安裝actiBPM插件)

    這篇文章主要介紹了Idea安裝bpmn插件actiBPM的詳細(xì)過程(解決高版本無法安裝actiBPM插件)的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Mybatis接口式編程的原理

    Mybatis接口式編程的原理

    mybatis有兩種實(shí)現(xiàn)方式,一種可以通過xml配置文件實(shí)現(xiàn),其二是面向接口編程的實(shí)現(xiàn)。本文重點(diǎn)給大家介紹mybatis接口編程的原理,需要的的朋友參考下
    2017-03-03
  • java實(shí)現(xiàn)文件加密解密多種方法

    java實(shí)現(xiàn)文件加密解密多種方法

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)文件加密解密多種方法的相關(guān)資料,?Java支持多種加密解密算法,常用的有DES、AES、RSA等,需要的朋友可以參考下
    2023-07-07
  • SpringCloud?Gateway實(shí)現(xiàn)API接口加解密

    SpringCloud?Gateway實(shí)現(xiàn)API接口加解密

    這篇文章主要為大家介紹了SpringCloud?Gateway如何實(shí)現(xiàn)API接口加解密的,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的幫助,需要的可以參考一下
    2022-06-06
  • MyBatis中的XML實(shí)現(xiàn)和動(dòng)態(tài)SQL實(shí)現(xiàn)示例詳解

    MyBatis中的XML實(shí)現(xiàn)和動(dòng)態(tài)SQL實(shí)現(xiàn)示例詳解

    這篇文章主要介紹了MyBatis中的XML實(shí)現(xiàn)和動(dòng)態(tài)SQL實(shí)現(xiàn),我們可以將XML中重復(fù)出現(xiàn)的內(nèi)容提取出來放到sql標(biāo)簽中,當(dāng)需要用到sql標(biāo)簽中的內(nèi)容時(shí),用include標(biāo)簽將sql標(biāo)簽中的內(nèi)容引進(jìn)來即可,感興趣的朋友跟隨小編一起看看吧
    2024-02-02

最新評(píng)論

武威市| 柞水县| 吉安市| 荣昌县| 安义县| 伊宁县| 琼结县| 清水河县| 荆州市| 石渠县| 波密县| 普洱| 惠州市| 牡丹江市| 汝州市| 潞城市| SHOW| 沿河| 阳谷县| 孟津县| 葵青区| 东宁县| 武邑县| 都匀市| 南阳市| 伊宁县| 鄂托克旗| 三亚市| 凤翔县| 鄂温| 长泰县| 仪陇县| 望谟县| 白玉县| 乌兰县| 德令哈市| 沁水县| 平安县| 广西| 大竹县| 衡东县|