當前位置: 首頁 / 技術分享 / 正文
好程序員大數據培訓分享實用教程之面向對象進階

2019-12-11

BigData 大數據培訓 好程序員 大數據教程

好程序員大數據培訓分享實用教程之面向對象進階:包的創建與使用

> 是對一個程序中指定功能的部分代碼進行包裝

構造方法

> 是一個方法

>

> 特殊點:

>

> 1. 構造方法沒有返回值,不是指的返回值類型是void,而是根本就不寫返回值類型

> 2. 方法名字和類名相同

> 3. 構造方法不能用static來修飾

>

> 構造方法調用的時機:

>

> 1. 通俗來講:是在實例化一個對象的時候調用的

>

> 一般情況下,我們在構造方法中做什么:

>

> 1. 對對象的某一些屬性進行初始化賦值操作

 

> 實例化對象的過程:

>

> Person xiaoming = new Person();

>

> new : 表示在堆上開辟空間

>

> 執行非靜態代碼段

>

> 然后再執行構造方法:

 

> 在構造方法中調用其他的構造方法

>

> > 可以使用this()的方式來調用其他的構造方法

> >

> > 注意事項:

> >

> > 1. this() 必須寫在構造方法的第一行

> > 2. 不能循環調用

>

> 無參構造方法需要注意的問題

>

> > 1. 如果一個類中沒有寫構造方法,此時這個類具有一個默認的public權限的無參構造方法

> > 2. 如果一個類中寫構造方法了,此時這個默認的public權限的無參構造方法將不再提供

 

代碼塊

> 非靜態代碼段

>

> **靜態代碼段**

>

> ```java

> static {

>     

> }

> // 當這個類第一次被加載到內存中的時候執行

> // 當你第一次使用這個類的時候執行(實例化對象、調用靜態方法...)

> ```

private關鍵字與屬性封裝

> 是一種編程思想:

>

>  狹義上的封裝:

>

> 一個類中的某一些屬性,我們不希望外界直接訪問。(外界賦的值可能不是我們想要的值)。此時,我們可以將這個屬性私有化(private),杜絕了外界直接訪問這個屬性的可能性。但是我們還需要再去提供用來訪問這個屬性的方法。(設置值、獲取值)(setter/getter)

>

>

>

>  **private:**

>

> 是訪問權限修飾符的其中之一,可以用來修飾屬性和方法。被private修飾的成員,只能夠在當前的類中訪問

 

**單例設計模式**

> 設計模式:

>

> 是前人總結出來的,用來解決特定問題的一個解決方案。

>

> 單例設計模式:

>

> 用來解決,在不同的模塊中,我們需要訪問到同一個類的同一個對象。

>

>  

>

> 關于私有化構造方法:

>

> 其實這個操作,在單例中是不必須的。

1. 餓漢式

   ```java

   /**

    * 在這個單例設計的過程中,只要我們用到了這個User類,instance都會實例化

    * 此時,instance可能我們并不會使用到。所以會造成一定程度上的性能損耗。

    */

   class User {

       // 聲明一個私有的、靜態的、當前類的對象,并實例化

       // 因為這個instance是靜態的,實例化的過程只會執行一次

       private static User instance = new User();

       // 提供一個public權限的、靜態的、返回當前類對象的方法

       public static User getUser() {

           // 將剛才實例化的instance返回,因為這個instance只會實例化一次,所以無論這個方法執行多少次,最終返回的結果都是同一個對象

           return instance;

       }

   }

   ```

2. 懶漢式

   ```JAVA

   /**

    * 使用的時候再去實例化instance,沒有多余的資源浪費

    * 這種方式,在多線程環境中有問題

    */

   class User {

       // 聲明一個私有的、靜態的、當前類的對象,不對他進行實例化

       // 什么時候需要獲取這個對象的時候,再去實例化

       private static User instance;

       // 提供一個public權限的、靜態的、返回當前類對象的方法

       public static User getUser() {

           // 在使用的時候,判斷instance是不是null, 如果是,對他做實例化,如果不是,直接使用即可

           if (instance == null)

               instance = new User();

           

           return instance;

       }

   }

   ```

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2020-02-17(北京)

    預約報名

    開班時間:2020-03-02(深圳)

    預約報名
  • 大數據+人工智能 <好程序員嚴選班>

    開班時間:2019-12-23(北京)

    開班盛況
  • 大數據+人工智能 <好程序員班>

    開班時間:2020-02-24(杭州)

    預約報名

    開班時間:2020-02-17(北京)

    預約報名
  • JavaEE分布式開發 <高端班>

    開班時間:2020-03-09(北京)

    預約報名
  • Python全棧+人工智能 <高端班>

    開班時間:2019-07-22(北京)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2020-02-24(北京)

    預約報名
在線咨詢
免費試聽
入學教程
立即報名

Copyright 2007-2019 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公安網11010802011455號

我要久久综合色久久,亚洲伊人色综网