Java物件導向深入篇

2021-09-05 08:34:17 字數 2807 閱讀 3205

1)成員變數和區域性變數的區別(本篇學習王偉和傳智劉意)

1.1)在類中的位置不同

成員變數:類中方法外

區域性變數:方法定義中或者方法宣告上

1.2)在記憶體中的位置不同

成員變數:在堆中

區域性變數:在棧中

1.3)生命週期不同

成員變數:隨著物件的建立而存在,隨著物件的消失而消失

區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失

1.4)初始化值不同

成員變數:有預設值

區域性變數:沒有預設值,必須定義,賦值,然後才能使用

2)構造器(構造方法、建構函式)

( [, ..])

2.1)格式:

2.1.1)方法名和類名相同

2.1.2)沒有返回值型別,連void都不能有

2.1.3)沒有返回值

2.2)構造器特點:

2.2.1)乙個類可以有多個構建器,但這些構造器的引數列表必須不同

2.2.2)每個類都會至少有乙個構造器,如果沒有定義構造器,則系統將自動提供乙個預設的不帶任何引數的構造器,如果類沒有定義構造器,可以用這個預設的構造起來生成乙個物件.推薦:永遠手動自己給出無參構造方法。

2.3)構造器的作用

用於對物件的資料進行初始化。通過構造器來建立物件,使用new 關鍵字來建立乙個物件new後面呼叫的是類中的乙個構造器。

2.4)給成員變數賦值的方式

2.4.1)set***()

2.4.2)帶參構造方法

2.5)案例

class student 

public student(string name,int age) 

public string getname() 

public void setname(string name) 

public int getage() 

public void setage(int age) 

}

2.5.1)測試

class studentdemo 

}

2.5.2)student s = new student();做了哪些事情?

(1)把student.class檔案載入到記憶體

(2)在棧記憶體為s開闢空間

(3)在堆記憶體為學生物件申請空間

(4)給學生的成員變數進行預設初始化。null,0

(5)給學生的成員變數進行顯示初始化。林青霞,27

(6)通過構造方法給成員變數進行初始化。劉意,30

(7)物件構造完畢,把位址賦值給s變數

3.1)代表當前類的引用物件

哪個物件呼叫方法,該方法內部的this就代表那個物件

3.2)this的應用場景:

3.2.1)解決了區域性變數隱藏成員變數的問題

3.2.2)其實this還有其他的應用

4:封裝

4.1)隱藏實現細節,提供公共的訪問方式

4.2)好處:

a:隱藏實現細節,提供公共的訪問方式

b:提高**的復用性

c:提高**的安全性

4.3)設計原則

把不想讓外界知道的實現細節給隱藏起來,提供公共的訪問方式

4.4)private是封裝的一種體現。

封裝:類,方法,private修飾成員變數

4.5)private關鍵字

私有的意義,可以修飾成員變數和成員方法

4.5.1)特點:

被private修飾的後的成員只能在本類中被訪問

4.5.2)private的應用:

以後再寫乙個類的時候:

把所有的成員變數給private了

提供對應的get***()/set***()方法

5、static關鍵字(理解)

5.1)靜態的意思。可以修飾成員變數和成員方法。

5.2)靜態的特點:

a:隨著類的載入而載入

b:優先與物件存在

c:被類的所有物件共享

這其實也是我們判斷該不該使用靜態的依據。

d:可以通過類名呼叫

既可以通過物件名呼叫,也可以通過類名呼叫,建議通過類名呼叫。

5.3)靜態的記憶體圖

靜態的內容在方法區的靜態區

5.4))靜態的注意事項;

a:在靜態方法中沒有this物件

b:靜態只能訪問靜態(**測試過)

5.5)靜態變數和成員變數的區別

a:所屬不同

靜態變數:屬於類,類變數

成員變數:屬於物件,物件變數,例項變數

b:記憶體位置不同

靜態變數:方法區的靜態區

成員變數:堆記憶體

c:生命週期不同

靜態變數:靜態變數是隨著類的載入而載入,隨著類的消失而消失

成員變數:成員變數是隨著物件的建立而存在,隨著物件的消失而消失

d:呼叫不同

靜態變數:可以通過物件名呼叫,也可以通過類名呼叫

成員變數:只能通過物件名呼叫

5.6)main方法是靜態的

public:許可權最大

static:不用建立物件呼叫

void:返回值給jvm沒有意義

main:就是乙個常見的名稱。

string args:可以接收資料,提供程式的靈活性

成員變數、區域性變數和靜態變數的區別

物件導向深入

獲取類 物件的所屬成員 類 物件.dict res demo.dict 獲取當前類的所屬成員 res obj.dict 獲取當前物件的所屬成員 獲取類的文件資訊 類 物件.doc res demo.doc res obj.doc 獲取類名稱組成的字串 res demo.name 獲取類所在的檔名稱,...

JAVA 物件導向

this關鍵字只能在方法內部使用,表示 呼叫方法的那個物件 的引用。this 用於建構函式之間進行相互呼叫。語句只能定義在建構函式的第一行。static 靜態 使用注意事項 1.靜態方法只能訪問靜態成員。非靜態方法可以訪問靜態成員。2.靜態方法中不可以定義this,super關鍵字。因為靜態優先於物...

JAVA 物件導向

定義類的格式 class student 例 public int addnumber int a,int b 注 方法名中的引數int a,int b為區域性變數 類方法中的一類特殊方法 構造方法。構造方法是當用類生成物件時,系統在生成物件的過程中利用的方法。注意 構造方法在生成物件的時候會被呼叫...