一.構造方法介紹
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方法