物件導向2

2021-08-26 08:54:56 字數 2411 閱讀 2391

6  static關鍵字

用法;: 是乙個修飾符, 用於修飾成員

當成員被靜態修飾後,就多了乙個呼叫方式,除了可以被物件呼叫外,還可以直接被類名呼叫。 類名.靜態成員

static特點      static成員 也叫 類變數

1 隨著類的載入而載入 也就是說:靜態會隨著類的消失而消失。 說明它的生命週期最長

2 優先於的物件存在   靜態成員在記憶體中的方法區(共享區)

3 被所有的物件所共享

4 可以直接被類名所呼叫

例項變數和類變數的區別:

1,存放位置。

類變數隨著類的載入而存在於方法區中。

例項變數隨著物件的建立而存在於堆記憶體中。

2,生命週期:

類變數生命週期最長,隨著類的消失而消失。

例項變數生命週期隨著物件的消失而消失。

靜態使用注意事項:

1,靜態方法只能訪問靜態成員。

非靜態方法既可以訪問靜態也可以訪問非靜態。

2,靜態方法中不可以定義this,super關鍵字。

因為靜態優先於物件存在。所以靜態方法中不可以出現this。

3,主函式是靜態的。

靜態有利有弊

利處:對物件的共享資料進行單獨空間的儲存,節省空間。沒有必要每乙個物件中都儲存乙份。

可以直接被類名呼叫。

弊端:生命週期過長。

訪問出現侷限性。(靜態雖好,只能訪問靜態。)

什麼時候使用static

1 什麼時候定義靜態變數

當物件中出現共享資料時,該資料被靜態所修飾;物件中所特有的資料要定義成非靜態

2 什麼時候定義靜態函式

當函式沒有訪問到非靜態資料(物件特有的資料),該函式可以被定義成靜態

靜態**塊

格式:        static

靜態**塊中執行的語句

特點: 隨著類的載入而執行,只執行一次,並優先於主函式, 用於給類進行初始化

7  主函式main

主函式是種特殊的函式, 作為程式的入口, 可以被jvm識別呼叫

主函式的定義

public: 代表函式的訪問許可權最大

static:代表主函式隨著類的載入就出現了

void: 代表主函式沒有具體返回值

main:不是關鍵字,是乙個特殊的單詞,可以被jvm識別

[string args] :函式的引數,引數型別是乙個陣列,陣列裡的元素是字串型別

主函式是固定格式被jvm識別    jvm呼叫主函式是 傳入的是new string[0];

8 物件的初始化過程

person p = new person("a",20);

該**在記憶體中的執行過程

1    因為new用到了person.class, 所以會先找到person.class檔案並載入到記憶體。

2    執行static**塊, 如果有static**塊可以給person.class類進行初始化

3   在堆記憶體中開闢空間,分配堆記憶體位址

4 在堆記憶體中建立物件的特有屬性,並進行預設初始化

5  對屬性進行顯示初始化

6  對屬性進行構造**塊初始化

7  對屬性進行對應的建構函式初始化

8 將記憶體位址賦值給棧記憶體中的p變數

9  單例設計模式

單例設計模式解決乙個類在記憶體中只有唯一的乙個物件

如何保證物件在記憶體中唯一

1  為了避免其他程式建立該物件,先禁止其他程式建立該物件

2 為了讓其他程式中訪問到該物件,只好在本類中自定義乙個物件

3 為了方便其他程式對自定義物件的訪問, 對外提供一些訪問方式

用**實現

1  將建構函式私有化

2 在類中建立乙個物件  物件為私有的

3 提供乙個方法可以獲得該物件

單例設計模式的兩種方式

1   餓漢式   single類一進記憶體就已經建立好了物件              一般用餓漢式

class  single

private static single s = new single();

public static single getinstance()

}2 懶漢式  物件被方法呼叫時才進行初始化,也叫做  物件的延時載入

class  single

private static single s = null;

public static single getinstance()

return s ; }

}

物件導向2

一.昨日內容回顧 1.匿名函式 lambda 引數 返回值 def chi return 飽了 lambda 飽了 2.sorted 排序 sorted iterable,key function,reverse false 3.filter 篩選 filter function,iterable ...

物件導向 2

1.物件導向的三大特性 封裝 繼承 多型。一 封裝 1.封裝的學習就是學習類成員的訪問許可權的控制。是設計類的時候需要考慮的問題。概念 通過對類中的成員的訪問許可權的控制,實現對外部類的訪問的可見和隱藏的控制的過程。2.類成員的訪問許可權的控制,通過訪問許可權修飾符來控制。可以在類成員的前面新增訪問...

物件導向2

物件導向的精髓是 將資料和處理資料的 繫結,成為乙個9物件 只要獲取到物件,相應的資料和方法都有了 組合 在乙個物件內引用其他物件 組合可以降低 的冗餘,降低耦合度 繼承是類之間的關係,組合是物件之間 封裝 隱藏內部細節,對外實現使用介面 封裝可以提高安全性 封裝是為了明確區分內部與外部 在屬性或方...