java的構造方法

一.構造方法介紹


1.什麼是構造方法

對象創建的時候需要執行的方法

2.構造方法的格式

修飾符 構造方法名(參數列表)
{
}

3.構造方法的體現

(1)構造方法沒有返回值類型,也不需要返回值,因爲它是爲了構建對象的,對象創建完,方法就執行結束了

(2)構造方法名必須和類名保持一致

(3)構造方法沒有具體的返回值

class Person {
	// Person的成員屬性age和name
	private int age;
	private String name;

	// Person的構造方法,方法名和類名保持一致,擁有參數列表
	Person(int a, String n) {
		// 接受到創建對象時傳遞進來的值,將值賦給成員屬性
		age = a;
		name = n;
	}
}


二.構造方法調用和內存圖解

構造方法是專門用來創建對象的,也就是在new對象的時候需要調用的方法。

class Person {

	private int age;
	private String name;

	Person(int a, String n) {
		age = a;
		name = n;
	}

	public void speak() {
		System.out.println("name=" + name + ",age=" + age);
	}
}

class PersonDemo {
	public static void main(String[] args) {
		// 創建Person對象,並明確對象的年齡和姓名
		Person p2 = new Person(23, "張三");
		p2.speak();
	}
}


代碼圖解:


(1)首先會將main方法壓入棧中,執行main方法中的 new Person(23,"張三"); 

(2)在堆內存中分配一片區域,用來存放創建的Person對象,這片內存區域會有屬於自己的內存地址(0x88)。然後給成員變量進行默認初始化(name=null,age=0)。

(3)執行構造方法中的代碼(age = a ; name = nm;),將變量a對應的23賦值給age,將變量nm對應的”張三賦值給name,這段代碼執行結束後,成員變量age和name的值已經改變。執行結束之後構造方法彈棧,Person對象創建完成。將Person對象的內存地址0x88賦值給p2。


三.默認構造方法


在描述對象的時候,如果沒有指定構造方法,當在編譯java文件的時候,編譯器會自動給class文件添加默認的構造方法;如果指定了構造方法,在編譯的時候就不會添加默認的構造方法。

class  Person {
	//如果沒有顯示指定構造方法,編譯會在編譯時自動添加默認的構造方法
	//Person(){}  //空參數的默認構造方法
}

1.怎麼判斷是否需要構造方法?

如果在創建對象的時候就要知道明確的值,就需要構造方法;否者不需要(不寫也有默認的構造方法)

2.構造方法的細節

(1)一個類可以有多個構造方法,多個構造方法是以重載的形式存在的

(2)構造方法是可以被private修飾的(其他程序無法創建該類的對象)

class Person {
	private int age;
	private String name;

	// 私有無參數的構造方法,即外界不能通過new Person();語句創建本類對象
	private Person() {
	}

	// 多個構造方法是以重載的形式存在
	Person(int a) {
		age = a;
	}

	Person(String n, int a) {
		name = n;
		age = a;
	}
}


四.構造方法與一般方法的區別


構造方法:在對象創建的時候就執行,而且只執行一次

一般方法:在對象創建後,需要使用的時候調用,而且可以調用多次


有了構造方法後就可以對對象初始化賦值了,我們還需要使用對應的set,get方法嗎?

需要使用set,get,因爲對象在創建以後,需要修改和訪問相應的屬性值時,只能通過set,get方法





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章