Java重載構(gòu)造原理與用法詳解
本文實(shí)例講述了Java重載構(gòu)造原理與用法。分享給大家供大家參考,具體如下:
帶參數(shù)方法
【1】無參數(shù),無返回值
void 方法名(){方法體;}
【2】無參數(shù),有返回值
int 方法名(){方法體;}
【3】有參數(shù),無返回值
void 方法名(int num){方法體;}
【4】有參數(shù),有返回值
int 方法名(int num){方法體;}
可變參數(shù)與數(shù)組參數(shù)的區(qū)別
【1】可變參數(shù)傳參靈活,,可以無參,可以多個(gè)參數(shù),可以數(shù)組;
數(shù)組參數(shù)只能傳遞數(shù)組
【2】可變參數(shù)必須放在最后
數(shù)組可以放在任意位置
【3】可變參數(shù)只能有一個(gè);
數(shù)組參數(shù)可以有多個(gè)。
遞歸算法
遞歸:程序調(diào)用自身的算法。
條件:1.調(diào)用方法本身。
2.出口
嵌套for循環(huán) 和 用遞歸實(shí)現(xiàn) 的比較
棧 主要是用來存放棧幀的,每執(zhí)行一個(gè)方法就會(huì)出現(xiàn)壓棧操作,所以采用遞歸的時(shí)候產(chǎn)生的棧幀比較多,遞歸就會(huì)影響到內(nèi)存,非常消耗內(nèi)存,而使用for循環(huán)就執(zhí)行了一個(gè)方法,壓入棧幀一次,只存在一個(gè)棧幀,所以比較節(jié)省內(nèi)存。
封裝
封裝定義:隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外提供公共的訪問方式。
使用封裝的好處
1、良好的封裝能夠減少耦合。
2、類內(nèi)部的結(jié)構(gòu)可以自由修改。
3、可以對成員進(jìn)行更精確的控制。
4、隱藏信息,實(shí)現(xiàn)細(xì)節(jié)。
public class Husband { /* * 對屬性的封裝 * 一個(gè)人的姓名、性別、年齡、妻子都是這個(gè)人的私有屬性 */ private String name ; private String sex ; private int age ; private Wife wife; /* * setter()、getter()是該對象對外開發(fā)的接口 */ public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setWife(Wife wife) { this.wife = wife; } }
方法重載
在一個(gè)類中,方法名相同,參數(shù)列表(個(gè)數(shù),順序,類型)不同。與返回值無關(guān)。
作用:方便記憶和使用。
重載方法不同的方式
在java中重載方法有三種方式,它們分別是:
- 通過改變參數(shù)的數(shù)量
- 通過更改數(shù)據(jù)類型
- 通過改變參數(shù)排列順序
注意:在java中,只通過更改方法的返回類型來實(shí)現(xiàn)方法重載是不可以的。
構(gòu)造器
系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)構(gòu)造方法(構(gòu)造器)默認(rèn)構(gòu)造。
如果沒有顯示的定義構(gòu)造器,那么系統(tǒng)會(huì)自動(dòng)定義一個(gè)構(gòu)造器,叫默認(rèn)構(gòu)造器。
可以顯示定義構(gòu)造器,只要顯示定義了構(gòu)造器,那么系統(tǒng)調(diào)用的是顯示定義的構(gòu)造器
無參構(gòu)造,只能在創(chuàng)建對象的時(shí)候才能調(diào)用
注意:1.沒有任何返回值
2.名字和類名必須一致
作用:初始化對象。
構(gòu)造器和訪問器的區(qū)別
1.構(gòu)造器 創(chuàng)建完對象,所有的屬性都初始化完成、
訪問器不能。
2.構(gòu)造器 創(chuàng)建對象的時(shí)候初始化,可以一次給所有屬性初始化
訪問器需要在創(chuàng)建對象后,逐個(gè)調(diào)用賦值
3.創(chuàng)建對象后,想要修改屬性值那么需要用訪問器。
構(gòu)造器和普通方法的區(qū)別
1.構(gòu)造器就是用來初始化對象的。
普通方法是為了完成某個(gè)特定的功能
2.構(gòu)造器只能在創(chuàng)建對象的時(shí)候調(diào)用new
普通方法在使用的時(shí)候可以隨意調(diào)用,不調(diào)用就不執(zhí)行
初始化對象
1.成員變量默認(rèn)初始化
2.聲明處初始化或構(gòu)造塊初始化
3.構(gòu)造器初始化
構(gòu)造塊
定義:在類中
class 類名{ { 構(gòu)造塊: 作用:解決構(gòu)造器中的屬性值相同,代碼重用的問題。 } }
本類構(gòu)造器調(diào)用
this();//
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解Maven 搭建spring boot多模塊項(xiàng)目(附源碼)
這篇文章主要介紹了詳解Maven 搭建spring boot多模塊項(xiàng)目(附源碼),具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09Java多線程中的CountDownLatch詳細(xì)解讀
這篇文章主要介紹了Java多線程中的CountDownLatch詳細(xì)解讀,一個(gè)同步輔助類,在完成一組正在其他線程中執(zhí)行的操作之前,它允許一個(gè)或多個(gè)線程一直等待,用給定的計(jì)數(shù) 初始化 CountDownLatch,需要的朋友可以參考下2023-11-11Java基于socket服務(wù)實(shí)現(xiàn)UDP協(xié)議的方法
這篇文章主要介紹了Java基于socket服務(wù)實(shí)現(xiàn)UDP協(xié)議的方法,通過兩個(gè)簡單實(shí)例分析了java通過socket實(shí)現(xiàn)UDP發(fā)送與接收的技巧,需要的朋友可以參考下2015-05-05淺談一下Java為什么不能使用字符流讀取非文本的二進(jìn)制文件
這篇文章主要介紹了淺談一下為什么不能使用字符流讀取非文本的二進(jìn)制文件,剛學(xué)Java的IO流部分時(shí),書上說只能使用字節(jié)流去讀取圖片、視頻等非文本二進(jìn)制文件,不能使用字符流,否則文件會(huì)損壞,需要的朋友可以參考下2023-04-04Spring Boot Starters簡介及其優(yōu)劣勢
在這篇文章中,我們將向你介紹Spring Boot Starters,并將討論Spring Boot Starters的優(yōu)點(diǎn)和優(yōu)勢,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05Lombok同時(shí)使?@Data和@Builder踩坑總結(jié)
這篇文章主要介紹了Lombok同時(shí)使?@Data和@Builder踩坑總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05Java實(shí)現(xiàn)一個(gè)簡易聊天室流程
這篇文章主要介紹了我的java課程設(shè)計(jì)一個(gè)多人聊天室(socket+多線程)本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11如何使用MybatisPlus快速進(jìn)行增刪改查詳解
增刪改查在日常開發(fā)中是再正常不多的一個(gè)需求了,下面這篇文章主要給大家介紹了關(guān)于如何使用MybatisPlus快速進(jìn)行增刪改查的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Gradle修改本地倉庫的位置方法實(shí)現(xiàn)
這篇文章主要介紹了Gradle修改本地倉庫的位置方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07