封裝及靜態(static)

2021-09-27 00:03:44 字數 4743 閱讀 5660

封裝是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式

好處:封裝原則:

常用之一:

將成員變數私有化,對外提供get,set方法進行訪問,提高資料安全性

/*

private :私有,許可權修飾符:用於修飾類中的成員(成員變數,成員函式)。

私有只在本類中有效。

將age私有化以後,類以外即使建立了物件也不能直接訪問。

但是人應該有年齡,就需要在person類中提供對應訪問age的方式。

注意:私有僅僅是封裝的一種表現形式。

之所以對外提供訪問方式,就因為可以在訪問方式中加入邏輯判斷等語句。

對訪問的資料進行操作。提高**健壯性。

*/public class persondemo

}class person

// 對外提供公共訪問方法

public void setage(int age)else

}public int getage()

}

特點:

作用:注意:

/*

物件一建立就會呼叫與之對應的建構函式。

建構函式的作用:可以用於給物件進行初始化。

建構函式的小細節:

當乙個類中沒有定義建構函式時,那麼系統會預設給該類加入乙個空引數的建構函式。

當在類中自定義了建構函式後,預設的建構函式就沒有了。

建構函式和一般函式在寫法上有不同。

在執行上也有不同。

建構函式是在物件一建立就執行。給物件初始化。

而一般方法是物件呼叫才執行,給是物件新增物件具備的功能。

乙個物件建立,建構函式只執行一次。

而一般方法可以被該物件呼叫多次。

什麼時候定義建構函式呢?

當分析事物時,該事物存在具備一些特性或者行為,那麼將這些內容定義在建構函式中。

*/public class persondemo2

}class person

person()

person(string name,int age)

public void cry()

}

this:看上去,是用於區分區域性變數和成員變數同名情況。

簡單說:哪個物件在呼叫this所在的函式,this就代表哪個物件。

成員變數和區域性變數。

作用範圍。

在記憶體中的位置:

this的應用:當定義類中功能時,該函式內部要用到呼叫該函式的物件時,這時用this來表示這個物件。

/*

this:看上去,是用於區分區域性變數和成員變數同名情況。

this為什麼可以解決這個問題?

this到底代表的是什麼呢?

this:就代表本類的物件,到底代表哪乙個呢?

this代表它所在函式所屬物件的引用。

簡單說:哪個物件在呼叫this所在的函式,this就代表哪個物件。

this的應用:當定義類中功能時,該函式內部要用到呼叫該函式的物件時,這時用this來表示這個物件。

但凡本類功能內部使用了了本類物件,都用this表示。

*/class person

person(string name)

person(string name,int age)

public void speak()

public void show()

/*需求:給人定義乙個用於比較年齡是否相同的功能。也就是是否是同齡人。

*/ public boolean compare(person p)

}class persondemo3

}

static 關鍵字:

被修飾後的成員具備以下特點:

使用注意

靜態有利有弊

利處:對物件的共享資料進行單獨空間的儲存,節省空間。沒有必要每乙個物件中都儲存乙份。 可以直接被類名呼叫。

弊端:生命週期過長。 訪問出現侷限性。(靜態雖好,只能訪問靜態。)

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

存放位置。 類變數隨著類的載入而存在於方法區中。 例項變數隨著物件的建立而存在於堆記憶體中。

生命週期: 類變數生命週期最長,隨著類的消失而消失。 例項變數生命週期隨著物件的消失而消失。

package 靜態方法;

/*靜態:static。

用法:是乙個修飾符,用於修飾成員(成員變數,成員函式).

當成員被靜態修飾後,就多了乙個呼叫方式,除了可以被物件呼叫外,

還可以直接被類名呼叫。類名.靜態成員。

static特點:

1,隨著類的載入而載入。

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

2,優先於的物件存在

明確一點:靜態是先存在。物件是後存在的。

3,被所有物件所共享

4,可以直接被類名所呼叫。

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

1,存放位置。

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

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

2,生命週期:

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

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

靜態使用注意事項:

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

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

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

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

3,主函式是靜態的。

靜態有利有弊

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

可以直接被類名呼叫。

弊端:生命週期過長。

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

*/public class staticdemo

}class person

public void haha()

}

主函式:是乙個特殊的函式。作為程式的入口,可以被jvm呼叫。

主函式的定義:

jvm在呼叫主函式時,傳入的是new string[0];

public class maindemo ;

maintest.main(arr); // 呼叫乙個類的主函式

}}class maintest

/*** 獲取整形陣列中的最大值

* @param arr 接受乙個int型別的陣列

* @return 返回該陣列中的最大值

*/public static int getmax(int arr)

}return arr[max];

}/**

* 獲取整形陣列中的最小值

* @param arr 接受乙個int型別的陣列

* @return 返回該陣列中的最小值

*/public static int getmin(int arr)}}

}/**

* 給陣列中的元素進行位置交換

* @param arr 接收乙個int型別的陣列

* @param i 要置換的位置

* @param j 要置換的位置

*/private static void swap(int arr,int i,int j)

/*** 用於列印陣列中的元素

* @param arr 接收乙個int型別的陣列

*/public static void printarray(int arr)else }}

}

格式:

static

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

public class staticcodedemo 

}class staticcode

public staticcode(int num)

static

public static void show()

}

// 靜態**塊   》 構造**塊 》建構函式

class person

private string name = "hah";

private int age;

private static string country = "cn";

person(string name,int age)

public void setname(string name)

public void speak()

public static void showcountry()

public static void method() }

class persondemo}/*

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

該句話都做了什麼事情?

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

2,執行該類中的static**塊,如果有的話,給person.class類進行初始化。

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

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

5,對屬性進行顯示初始化。

6,對物件進行構造**塊初始化。

7,對物件進行對應的建構函式初始化。

8,將記憶體位址付給棧記憶體中的p變數。

*/

static 靜態方法

乙個不需要任何主叫物件的方法就是靜態方法。靜態方法需要關鍵字static來宣告於定義,他不需要主叫物件,因為它不屬於物件而是屬於類。靜態方法可以被子類繼承,也可以被重寫,但是不能實現多型性。多型性的實現重點在於動態繫結,每一次在呼叫相應方法的時候都是去動態查詢匹配,靜態方法是在類初次載入的時候就已經...

static靜態方法

static也可以修飾方法,使之成為靜態方法,我們通常用的入口函式,也就是main方法就是乙個靜態方法。注意事項 靜態方法可以直接呼叫靜態變數,不能呼叫非靜態成員變數。public class helloworld 2.可以通過建立類的物件來呼叫非靜態成員 public class hellowor...

靜態static 筆記

1.類物件共享 2.類載入時產生,銷毀時釋放,生命週期長 靜態成員的訪問 1.物件.成員 2.類名.成員 static放於屬性名前稱作靜態屬性 類屬性 static放於方法名前稱作靜態方法 類方法 推薦呼叫方式 類名.靜態成員 在成員方法中,可以直接訪問類中的靜態成員 靜態方法中不能直接訪問同乙個類...