1. 程式人生 > >java面向物件(構造方法)

java面向物件(構造方法)

一.構造方法概念

需要在建立物件的同時明確物件的屬性值

//構造方法的格式:
修飾符 構造方法名(引數列表)
{
}

構造方法的體現:

1.構造方法沒有返回值型別。也不需要寫返回值。因為它是為構建物件的,物件建立完,方法就執行結束。

2.構造方法名稱必須和類名保持一致。

3.構造方法沒有具體的返回值。

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

    // Person的構造方法,擁有引數列表
    Person(int a, String nm) {
        
// 接受到建立物件時傳遞進來的值,將值賦給成員屬性 age = a; name = nm; } }

二.構造方法呼叫和記憶體圖解

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

    // Person的構造方法,擁有引數列表
    Person(int a, String nm) {
        // 接受到建立物件時傳遞進來的值,將值賦給成員屬性
        age = a;
        name = nm;
    }

    
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.構造方法是可以被private修飾的,作用:其他程式無法建立該類的物件。

class Person {
    private int age;
    private String name;

    // 私有無引數的構造方法,即外界不能通過new Person();語句建立本類物件
    private Person() {
    }

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

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

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

構造方法在物件建立時就執行了,而且只執行一次。

一般方法是在物件建立後,需要使用時才被物件呼叫,並可以被多次呼叫。