java面向物件(構造方法)
阿新 • • 發佈:2019-01-04
一.構造方法概念
需要在建立物件的同時明確物件的屬性值
//構造方法的格式: 修飾符 構造方法名(引數列表) { }
構造方法的體現:
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; } }
四.構造方法和一般方法的區別
構造方法在物件建立時就執行了,而且只執行一次。
一般方法是在物件建立後,需要使用時才被物件呼叫,並可以被多次呼叫。