Java學習筆記12(物件導向五:構造方法、this再探)

來源:互聯網
上載者:User

標籤:new   int   java學習   實參   記憶體   person   一個   private   pre   

在開發中,經常需要在建立對象的同時明確對象對的屬性值,

比如一個Person對象建立時候就應該有age和name等屬性

那麼如何做到在建立對象的同時給對象的屬性初始化值呢?

這裡介紹構造方法:

1.構造方法沒有傳回值類型,更沒有傳回值,因為它是構建對象的,對象建立完,方法就執行結束

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

3.構造方法什麼時候運行呢?答:在建立對象的時候自動執行,而且只運行一次

定義樣本:

public class Person {    public Person(){        System.out.println("我是一個空參數的構造方法");    }}

運行:

public class Test {    public static void main(String[] args) {        Person p = new Person();    }}//輸出:我是一個空參數的構造方法

 

構造方法是每個類的必須內容,寫或者不寫都存在

編譯器(javac)在編譯的時候會檢測是否有構造方法,如果有,執行,如果沒有,自動建立一個空參數空內容的構造方法

 

構造方法的賦值:

public class Person {    private String name;    private int age;    public Person(String name,int age){        this.name = name;        this.age = age;    }}
public class Test {    public static void main(String[] args) {        Person p = new Person("張三",18);    }}

 

構造方法記憶體分析:

1.main方法進棧運行,內容只有一行:建立對象

2.堆中開空間存入對象,並帶有兩個參數

3.兩個私人變數跟隨進入堆記憶體,並賦預設值(null,0)

4.對象把自己的地址傳給this關鍵字

5.對象調用自己的構造方法,構造方法進棧運行,並且對象把兩個參數傳入

6.構造方法用this.的方式訪問堆記憶體的對象並給成員變數賦值

7.構造方法運行結束,對象建立完成,地址傳給p

 

構造方法是可以重載的

樣本:

public class Person {    private String name;    private int age;    public Person() {    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }}
public class Test {    public static void main(String[] args) {        Person p = new Person("張三", 18);        Person p1 = new Person();    }}

 

 

this在構造方法之間的調用:

public class Person {    private String name;    private int age;    public Person() {        //this()是調用其他的構造方法        //this()必須寫在構造方法第一行        this("張三", 20);    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }}
public class Test {    public static void main(String[] args) {        Person p1 = new Person("張三", 18);        Person p2 = new Person();    }}

 

記憶體原理:

1.main方法進棧運行,在堆中開空間建立對象,成員變數跟隨並賦預設值

2.對象調用自己的構造方法,調用空參數構造,進棧運行,實參傳遞

3.調用了有參數構造方法,有參構造方法進棧運行

4.賦值完成有參構造方法結束,空參構造方法結束,然後對象建立完成

5.對象地址傳給p1(p2)

 

Java學習筆記12(物件導向五:構造方法、this再探)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.