150天打卡day11_方法的重載和構(gòu)造方法
方法的重載
方法的簽名包括兩部分:方法名和參數(shù)列表
是來自于英文單詞signature,外國人認(rèn)為每個簽名都必須是唯一的,不可以有相同的兩個簽名。
那么程序在運行的時候,也是要求在一個類里面不可以有方法簽名完全一樣的兩個方法.
如果這么寫編譯器立馬就會報編譯錯誤,但是如果方法名相同,參數(shù)列表不同的話是可以的
有的同學(xué)會有這樣的誤區(qū),寫成這樣
這樣也是會報編譯錯誤的a,b這兩個變量名編譯器認(rèn)為他就僅僅是兩個名字而已,不做任何判斷,還是會認(rèn)為這兩個方法的參數(shù)列表是一樣的。
但是如果寫成這樣就是可以的,所以呢,參數(shù)列表不同只和參數(shù)的類型,個數(shù),還有順序有關(guān).
?
在一個類里面如果有兩個方法他們的方法名相同,參數(shù)列表不同,就可以把這稱之為是方法的重載。為什么會用到方法的重載呢?
來看這樣一個例子,模擬一下現(xiàn)實生活中的收銀系統(tǒng)
假設(shè)收款窗口的的設(shè)計可以采用兩種方式:
A:開設(shè)三個窗口,分別用來收取現(xiàn)金,微信支付和支付寶支付,三種支付渠道,用戶在付款的時候根據(jù)需求選擇不同的窗口。
B:只開設(shè)一個窗口,但是支持現(xiàn)金支付,微信支付,和支付寶支付三種支付方式
常規(guī)情況下都會認(rèn)為是B的設(shè)計會更加合理。
可以降低用戶的負(fù)擔(dān),用戶去付款的時候不需要再去找相應(yīng)的窗口,只需要到收款窗口,如果你是
微信,就出示微信的二維碼,如果你是支付寶就拿出支付寶的二維碼就可以了。

有了方法的重載,對于同一件事情,如果有不同的解決方法就不用在一個類里面去定義不同的多
個方法了,大大的減少了代碼的冗余。那么在主方法中去調(diào)用的時候,編譯器會自動根據(jù)傳入的
參數(shù)來調(diào)用合適的方法。重載方法的調(diào)用與之前學(xué)習(xí)的方法調(diào)用相同
?
構(gòu)造方法
構(gòu)造方法是在創(chuàng)建對象的時候為其開辟內(nèi)存空間,并且用來初始化成員變量的時候調(diào)用的一個特殊的方法
沒有返回值
方法名必須和類名一致
任何一個類都有他的構(gòu)造方法,如果不寫,編譯器在運行的時候會自動添加一個空的無參構(gòu)造方法,稱之為是默認(rèn)的構(gòu)造方法。但是如果自己定義想要初始化那個成員變量就需要自己去定義構(gòu)造方法,如果自己定義了帶參的構(gòu)造方法,那么原有的空的無參構(gòu)造就會失效。
在創(chuàng)建對象的時候,構(gòu)造函數(shù)跟在new關(guān)鍵字的后面意思就是在實例化了一個對象,而構(gòu)造方法對這個對象進行了初始化,里面的參數(shù)類型和個數(shù)都必須和構(gòu)造方法里面定義的保持一致。
構(gòu)造方法的作用
初始化成員變量
成員變量的作用域在整個類內(nèi)部都是可見,可用的;
?java會給成員變量一個初始值,初始值為0;
在不同的方法中,可以有同名的局部變量;
this 關(guān)鍵字
可以看到如果在類中聲明成員變量,自己定義一個帶參的構(gòu)造方法來為成員變量賦值,會出現(xiàn)成員變量和自己定義的參數(shù)重名了
public class Student{ ?String name; ?int age; ?public Student(String name, int age){ ? ?name = name; ? ?age = age; ?} }
在類中的方法是既可以使用自己定義的參數(shù),也可以使用成員變量,當(dāng)成員變量和自己定義的參數(shù)發(fā)生重名時,就需要用到一個this關(guān)鍵字來進行區(qū)分哪個是成員變量,哪個是自己定義的參數(shù)。
this關(guān)鍵字用在方法體中,用于指向調(diào)用該方法的當(dāng)前對象,簡單的來說,就是那個對象調(diào)用方法,this就指向哪個對象,
在方法中通過this關(guān)鍵字來指明當(dāng)前對象,用運算符"."來表示對象的屬性,可以理解為“對象的”
但是如果沒有歧義的話,我們可以省略this
構(gòu)造方法的重載
方法可以重載,同樣構(gòu)造方法也是可以重載的,為了方便使用,可以定義多個構(gòu)造方法,這些構(gòu)造方
法都有相同的類名,只是參數(shù)列表不同.
稱之為是構(gòu)造方法的重載,在調(diào)用的時候同樣也是根據(jù)傳入的參數(shù)編譯器會自動判斷調(diào)用的是
哪個構(gòu)造方法
歡迎??點贊+關(guān)注,筆芯??
