java詳解 構造方法和static關鍵字

2021-08-13 02:38:39 字數 2134 閱讀 6154

1.作用

構造方法是乙個方法,作用是對對像的屬性(就是成員變數)進行初始化.

2.寫法

a.構造方法的方法名和類名完全一樣(大小寫必須一樣);

b.沒有返回值(沒有return)和返回值型別(不寫void).

例如:

class car

}

上面就是乙個沒有引數型別的構造方法.既然有沒有引數的建構函式,那麼肯定也有有引數的建構函式.

3.無參構造方法和有參構造方法

舉例說明無參構造方法和有參構造方法有什麼不同:

public

class demo01

}//定義乙個類

class person

//定義乙個有引數的構造方法

public

person(string name,int age)

}

由此可以得出怎麼理解構造方法的有參和無參?

初始化後面的那對小括號 –>

有參就是在小括號裡填寫引數;

無參就是不在小括號裡面填寫引數.

由此可以聯想到函式的過載(引數的順序,個數,資料型別不同就是函式的過載.和函式名無關),構造方法同樣也符合函式的過載.

4.構造方法的注意事項

a.如果你沒寫任何構造方法,那麼系統會自動提供乙個無參的構造方法給你;

b.如果你寫了有引數的構造方法,那麼這時系統就不會提供無參的構造方法給你;

c.如果你寫了有引數的構造方法,那麼建議你把無參的構造方法也寫了.

舉例說明:

public

class demo02

}//定義乙個car類

class car

//寫乙個有引數的構造方法

public

car(string name,string color)

public

void

sayhi()

}

static表示「全域性」或者「靜態」的意思,用來修飾成員變數和成員方法.static關鍵字主要有兩種作用:

第一,為某特定資料型別或物件分配單一的儲存空間,而與建立物件的個數無關;

第二,實現某個方法或屬性與類而不是物件關聯在一起.

1.靜態變數 – 類變數

static修飾的成員變數習慣上稱為靜態變數.可以直接通過類名來呼叫.也可以用物件呼叫,但是不推薦,因為靜態變數被載入的時候,物件還沒有被建立,所以靜態變數不依賴物件,因此不推薦使用物件名呼叫.

2.靜態變數使用的一些問題

—靜態變數的特點:

a.隨著類的載入而載入;

b.建立順序優先於物件;

c.是類建立出來的物件,是可以共享的部分;

d.可以用類名去呼叫

—靜態變數的好處:

可以節省記憶體空間.建立一次,類中的物件都可以呼叫.

—靜態變數與成員變數的區別:

a.所屬不同

靜態變數:屬於類 所以又被稱為類變數

成員變數:屬於物件 所以又被稱為物件變數或者例項變數

b.在記憶體中的儲存位置不同

靜態變數:儲存在方法區的靜態區中

成員變數:儲存在堆記憶體中

c.載入到記憶體中的時間不同

靜態變數:隨著類的載入而存在

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

d.呼叫方法不同

靜態變數:可以使用物件呼叫,也可以是有類呼叫.一般使用類呼叫

成員變數:只能使用物件去呼叫

下面舉例說明:

public

class demo03

}//定義乙個singer類

class singer

}

3.靜態方法 — 類方法

舉例說明靜態方法:

public

class demo05

//定義乙個man類

class man

// 宣告乙個靜態成員方法

// 靜態方法只能使用靜態的變數和靜態方法

public

static

void

sayhi2()

}

構造方法 物件的建立過程 this和static

一 構造方法 構造器的要點 1.通過new關鍵字呼叫 2.構造器雖然有返回值,但是不能定義返回值型別 返回值型別肯定是本類 不能再構造器裡使用return返回某個值 3.如果我們沒有定義構造器,則編譯器會自動定義乙個無參的構造方法。如果已定義則編譯器不會自動新增 4.構造方法的方法名必須與類名一致 ...

詳解建構函式模式

前言 雖然ecmascript從技術上講是一門物件導向的語言,但是它不具備傳統的物件導向語言所支援的類和介面等基本結構。但在es5中,有與類相似的引用型別。引用型別描述一類物件所具有的屬性和方法,引用型別的值 物件 是引用型別的乙個例項,所以也被稱為物件定義。新物件是使用new 操作符後跟乙個建構函...

java 構造方法

構造方法的特點 1 構造方法的方法名必須和當前的類名保持一致。2 構造方法是沒有返回值的,也就是在書寫構造方法的時候不能書寫返回值型別 注意這裡連void都不能寫 可以新增修飾符 構造方法中需要注意的問題 1 如果在乙個構造方法中呼叫其他的構造方法,那麼這個this 呼叫必須寫在該類這個構造方法中的...