JAVA構造方法(this,static)

2021-08-21 23:44:28 字數 2036 閱讀 3157

例項化乙個類的物件後,如果要為這個物件中的屬性賦值,則必須要通過直接訪問物件的屬性或呼叫set***()方法的方式才可以實現。如果需要在例項化物件的同時就為這個物件的屬性賦值,可以通過構造方法來實現。

構造方法是類的乙個特殊的成員,它會在類例項化物件時被自動呼叫。

作用就是在建立物件的時候,給物件的成員變數賦初始值。

函式名:必須和類名一致(包括大小寫)。

返回值型別:沒有返回值型別,void都不能寫。

return:建構函式可以有return,但是不能有返回值,一般不書寫return。

示例:

class student 

// 有參構造方法,例項物件的同時給屬性賦值

public student(string n, string s, int a)

}

建構函式和一般函式的區別:

1、從書寫格式上看:

a) 建構函式:沒有返回值型別;函式名必須和類名一致。

b) 一般函式:必須有返回值型別;函式名可以自定義;一般不要和類名一樣;如果函式的名字和類名一樣,判斷是不是建構函式,就通過有沒有返回值型別來確定。

2、從呼叫方式上看:

a) 建構函式: 在建立物件時,由jvm自動呼叫。

b) 一般函式: 建立物件後,由物件名來呼叫。

3、從作用上看:

a) 建構函式:在建立物件時,就給成員變數賦值。

b) 一般函式:實現各種功能,描述事物的行為資訊。

4、從乙個物件可以呼叫次數上看:

a) 建構函式:只在建立物件時被呼叫一次。

b) 一般函式:可以使用物件名呼叫無數次。

class student 

// 有參構造方法,例項物件的同時給屬性賦值

public student(string n, string ***)

// 有參構造方法,例項物件的同時給屬性賦值

public student(string n, string s, int a)

public void speak()

public static void staticvoid()

private void privatevoid()

}public class classtest

}

執行結果:

單例模式是指乙個類不管被new多少次,只存在乙個物件。就像我們生存的世界只有乙個太陽,假設現在要設計乙個類來表示月亮,該類只能有乙個例項物件,否則就違背了事實。

單例模式具備以下特點:

類的構造方法私有,即用private修飾,這樣在類的外面就沒法隨便new物件了。

類的內部宣告乙個私有(private)靜態(static)的該類的物件作為變數。類的外面不能隨意訪問這個成員變數。

為了讓外部能夠獲得類的例項物件,需要定義乙個(static)方法,一般採用getinstance(),用於返回該類的例項。採用(static)修飾,外界可以通過"類名.方法名()"的方式訪問。

下面給出單例模式設計的常用兩種模式:

//飢漢模式

class singletest1

public static singletest1 getinstance()

}// 懶漢模式

class singletest2

public static singletest2 getinstance()

return instance;

}// public static synchronized singletest2 getinstancel()

// return instance;

// }

}public class single1

}

java 構造方法

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

Java構造方法

所謂的構造方法,就是在建立物件的時候自動呼叫的方法。我們來直接看個例子。public class mail mail string name,string addr 有參的構造方法 public void send public class test 在mail郵件類中,我寫了三個方法,其中有兩個是...

Java 構造方法

構造器 構造方法 用於物件初始化!注意 1.構造方法名稱必須和類名稱相同!2.構造方法的呼叫只能在物件例項化的時候呼叫,當new 類名 之後,系統自動執行構造方法!不能通過物件名.構造方法去呼叫 無引數構造方法 public class cat 成員方法 跑動,吃東西 public void run...