日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java带参数的构造方法_崤云说 | JAVA面向对象

發(fā)布時間:2025/4/5 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java带参数的构造方法_崤云说 | JAVA面向对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊上面“藍字”關注我們

今天的崤云說,是研發(fā)部的周浩宇為大家?guī)硪黄狫AVA技術分享

內(nèi)容介紹

u?構(gòu)造方法

1.1?構(gòu)造方法介紹

在開發(fā)中經(jīng)常需要在創(chuàng)建對象的同時明確對象的屬性值,比如員工入職公司就要明確他的姓名、年齡等屬性信息。

那么,創(chuàng)建對象就要明確屬性值,那怎么解決呢?也就是在創(chuàng)建對象的時候就要做的事情,當使用new關鍵字創(chuàng)建對象時,怎么給對象的屬性初始化值呢?這就要學習Java另外一門小技術,構(gòu)造方法。

那什么是構(gòu)造方法呢?從字面上理解即為構(gòu)建創(chuàng)造時用的方法,即就是對象創(chuàng)建時要執(zhí)行的方法。既然是對象創(chuàng)建時要執(zhí)行的方法,那么只要在new對象時,知道其執(zhí)行的構(gòu)造方法是什么,就可以在執(zhí)行這個方法的時候給對象進行屬性賦值。

l?構(gòu)造方法的格式:

修飾符 構(gòu)造方法名(參數(shù)列表)

{

}

l?構(gòu)造方法的體現(xiàn):

l?構(gòu)造方法沒有返回值類型。也不需要寫返回值。因為它是為構(gòu)建對象的,對象創(chuàng)建完,方法就執(zhí)行結(jié)束。

l?構(gòu)造方法名稱必須和類型保持一致。

l?構(gòu)造方法沒有具體的返回值。

l?構(gòu)造方法的代碼體現(xiàn):

class?Person {

// Person的成員屬性age和name

private?int?age;

private?String name;

// Person的構(gòu)造方法,擁有參數(shù)列表

Person(int?a, String nm) {

// 接受到創(chuàng)建對象時傳遞進來的值,將值賦給成員屬性

age?= a;

name?= nm;

}

}

1.2?構(gòu)造方法調(diào)用和內(nèi)存圖解

理解構(gòu)造方法的格式和基本功能之后,現(xiàn)在就要研究構(gòu)造方法是怎么執(zhí)行的呢?在創(chuàng)建對象的時候是如何初始化的呢?

構(gòu)造方法是專門用來創(chuàng)建對象的,也就是在new對象時要調(diào)用構(gòu)造方法?,F(xiàn)在來看看如何調(diào)用構(gòu)造方法。

class?Person {

// Person的成員屬性age和name

private?int?age;

private?String name;

// Person的構(gòu)造方法,擁有參數(shù)列表

Person(int?a, String nm) {

// 接受到創(chuàng)建對象時傳遞進來的值,將值賦給成員屬性

age?= a;

name?= nm;

}

public?void?speak() {

System.out.println("name="?+ name?+ ",age="?+ age);

}

}

class?PersonDemo {

public?static?void?main(String[] args) {

// 創(chuàng)建Person對象,并明確對象的年齡和姓名

Person p2 = new?Person(23, "張三");

p2.speak();

}

}

上述代碼演示了創(chuàng)建對象時構(gòu)造方法的調(diào)用。即在創(chuàng)建對象時,會調(diào)用與參數(shù)列表對應的構(gòu)造方法。

上述代碼的圖解:

l?圖解說明:

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

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

3、執(zhí)行構(gòu)造方法中的代碼(age = a ; name = nm;),將變量a對應的23賦值給age,將變量nm對應的”張三賦值給name,這段代碼執(zhí)行結(jié)束后,成員變量age和name的值已經(jīng)改變。執(zhí)行結(jié)束之后構(gòu)造方法彈棧,Person對象創(chuàng)建完成。將Person對象的內(nèi)存地址0x88賦值給p2。

1.3?默認構(gòu)造方法和細節(jié)

在沒有學習構(gòu)造方法之前,我們也可以通過new關鍵字創(chuàng)建對象,并調(diào)用相應的方法,同時在描述事物時也沒有寫構(gòu)造方法。這是為什么呢?

在之前學習的過程中,描述事物時,并沒有顯示指定構(gòu)造方法,當在編譯Java文件時,編譯器會自動給class文件中添加默認的構(gòu)造方法。如果在描述類時,我們顯示指定了構(gòu)造方法,那么,當在編譯Java源文件時,編譯器就不會再給class文件中添加默認構(gòu)造方法。

class ?Person {

//如果沒有顯示指定構(gòu)造方法,編譯會在編譯時自動添加默認的構(gòu)造方法

//Person(){}??//空參數(shù)的默認構(gòu)造方法

}

當在描述事物時,要不要在類中寫構(gòu)造方法呢?這時要根據(jù)描述事物的特點來確定,當描述的事物在創(chuàng)建其對象時就要明確屬性的值,這時就需要在定義類的時候書寫帶參數(shù)的構(gòu)造方法。若創(chuàng)建對象時不需要明確具體的數(shù)據(jù),這時可以不用書寫構(gòu)造方法(不書寫也有默認的構(gòu)造方法)。

l?構(gòu)造方法的細節(jié):

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

2、構(gòu)造方法是可以被private修飾的,作用:其他程序無法創(chuàng)建該類的對象。

class?Person {

private?int?age;

private?String name;

// 私有無參數(shù)的構(gòu)造方法,即外界不能通過new Person();語句創(chuàng)建本類對象

private?Person() {

}

// 多個構(gòu)造方法是以重載的形式存在

Person(int?a) {

age?= a;

}

Person(String nm, int?a) {

name?= nm;

age?= a;

}

}

1.4?構(gòu)造方法和一般方法區(qū)別

到目前為止,學習兩種方法,分別為構(gòu)造方法和一般方法,那么他們之間有什么異同呢?

構(gòu)造方法在對象創(chuàng)建時就執(zhí)行了,而且只執(zhí)行一次。

一般方法是在對象創(chuàng)建后,需要使用時才被對象調(diào)用,并可以被多次調(diào)用。

l?問題:

有了構(gòu)造方法之后可以對對象的屬性進行初始化,那么還需要對應的set和get方法嗎?

需要相應的set和get方法,因為對象在創(chuàng)建之后需要修改和訪問相應的屬性值時,在這時只能通過set或者get方法來操作。

思考,如下代碼有問題嗎?

class?Person {

void?Person() {

}

}

class?PersonDemo {

public?static?void?main(String[] args) {

Person p?= new?Person();

}

}

1.5?知識點總結(jié)

l?構(gòu)造方法:用來給類的成員進行初始化操作

l?格式:

修飾符 類名 (參數(shù)列表) {

...

}

l?構(gòu)造方法的特點:

l?1, 方法名與類名相同

l?2,沒有返回值,也沒有返回值類型,連void也沒有

l?構(gòu)造方法什么時候會被調(diào)用執(zhí)行?

只有在創(chuàng)建對象的時候才可以被調(diào)用

l?繼承中的構(gòu)造方法注意事項:

1,如果我們手動給出了構(gòu)造方法,編譯器不會在給我們提供默認的空參數(shù)構(gòu)造方法

如果我們沒寫任何的構(gòu)造方法,編譯器提供給我們一個空參數(shù)構(gòu)造方法

2, 在構(gòu)造方法中,默認的第一條語句為 super();

它是用來訪問父類中的空參數(shù)構(gòu)造方法,進行父類成員的初始化操作

3, 當父類中沒有空參數(shù)構(gòu)造方法的時候,怎么辦?

a: 通過 super(參數(shù)) 訪問父類有參數(shù)的構(gòu)造方法

b: 通過 this(參數(shù)) 訪問本類中其他構(gòu)造方法

???注意:[本類中的其他構(gòu)造方法已經(jīng)能夠正常訪問父類構(gòu)造方法]

4, super(參數(shù)) 與 this(參數(shù)) 不能同時在構(gòu)造方法中存在

總結(jié)

以上是生活随笔為你收集整理的java带参数的构造方法_崤云说 | JAVA面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。