亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java構(gòu)造器方法深入理解

 更新時(shí)間:2021年09月14日 10:31:53   作者:威斯布魯克.猩猩  
這篇文章主要介紹了Java構(gòu)造器方法深入理解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

重載

1.構(gòu)造器的重載

因?yàn)闃?gòu)造器的名字必須與類(lèi)名相同,所以同一個(gè)類(lèi)的所有構(gòu)造器名肯定相同,構(gòu)成重載;為了讓系統(tǒng)能區(qū)分不同的構(gòu)造器,多個(gè)構(gòu)造器的參數(shù)列表必須不同。

class Person{
    int age;
    String name;
    public Person(){
    }
    public Person(int age){
        this.age = age;
    }
    public Person(int age,String name){
        this(age);
        this.name = name;
    }
}

2.方法的重載(overload)


1.定義:在同一個(gè)類(lèi)中,允許存在一個(gè)以上的同名方法,只要他們的參數(shù)個(gè)數(shù)或者參數(shù)類(lèi)型不同即可。

兩同一不同”:同一個(gè)類(lèi)、相同方法名

參數(shù)列表不同:參數(shù)個(gè)數(shù)不同,參數(shù)類(lèi)型不同

2.舉例:

Arrays類(lèi)中重載的sort() / binarySearch()

3.判斷是否重載:

跟方法的權(quán)限修飾符、返回值類(lèi)型、形參變量名、方法體都沒(méi)有關(guān)系!

class Person{
    public void getSum(int i,int j){//A    
        System.out.println("憨憨");
    }
    public void getSum(double d1,double d2){//B
    }
    public void getSum(String s,int i){//形參先后順序不同,也構(gòu)成重載//C
    }
    public void getSum(int i,String s){//D
    }
    public void getSum(int i,int j){//與方法體無(wú)關(guān)?。。?!
        return 0;
    }
    public void getSum(int m,int n){//與參數(shù)名無(wú)關(guān)?。。?!
    
    }
    private void getSum(int i,int j){//與權(quán)限修飾符大小無(wú)關(guān)?。。。?
    
    }
}

4.在通過(guò)對(duì)象調(diào)用方法時(shí),如何確定某一個(gè)指定的方法 :

方法名------>參數(shù)列表

重寫(xiě)

為什么要重寫(xiě):父類(lèi)的功能無(wú)法滿(mǎn)足子類(lèi)的需求

方法重寫(xiě)的前提:必須要存在繼承的關(guān)系!

應(yīng)用:重寫(xiě)以后,當(dāng)創(chuàng)建子類(lèi)對(duì)象以后,通過(guò)子類(lèi)對(duì)象調(diào)用子父類(lèi)的同名參數(shù)的方法時(shí),實(shí)際執(zhí)行的時(shí)子類(lèi)重寫(xiě)父類(lèi)的方法

重寫(xiě)的規(guī)定:

方法的聲明:權(quán)限修飾符 返回值類(lèi)型 方法名(形參列表) throws 異常的類(lèi)型{

//方法體

}

約定俗稱(chēng):子類(lèi)中的叫重寫(xiě)的方法,父類(lèi)中的叫被重寫(xiě)的方法

A. 子類(lèi)重寫(xiě)的方法的方法名和形參列表與父類(lèi)被重寫(xiě)的方法的方法名和形參列表相同

B. 子類(lèi)重寫(xiě)的方法的權(quán)限修飾符不小于父類(lèi)被重寫(xiě)的方法的權(quán)限修飾符

>特殊情況:子類(lèi)不能重寫(xiě)父類(lèi)中聲明為private權(quán)限的方法

C. 返回值類(lèi)型:

>父類(lèi)被重寫(xiě)的方法的返回值類(lèi)型是void,則子類(lèi)重寫(xiě)的方法的返回值類(lèi)型只能是void

>父類(lèi)被重寫(xiě)的方法的返回值類(lèi)型是A類(lèi)型,則子類(lèi)重寫(xiě)的方法的返回值類(lèi)型可以是A類(lèi)或A的子類(lèi)

//這樣算重寫(xiě),String是Object的子類(lèi)
pulbic Object show(){//父類(lèi)方法
}
public String show(){//子類(lèi)方法
}
//這樣不是重寫(xiě),返回值類(lèi)型不同
pulbic void catch(){//父類(lèi)方法
}
pulbic int  catch(){//子類(lèi)方法
}

>父類(lèi)被重寫(xiě)的方法的返回值類(lèi)型是基本數(shù)據(jù)類(lèi)型(比如:double).則子類(lèi)重寫(xiě)的方法的返回值類(lèi)型必須是相同的(double)

D.子類(lèi)重寫(xiě)的方法拋出的異常類(lèi)型不大于父類(lèi)被重寫(xiě)的方法拋出的異常類(lèi)型.(可以?huà)伋霎惓n?lèi)型更少、異常類(lèi)型更小、不拋出異常)

子類(lèi)和父類(lèi)中的同名同參數(shù)的方法要么都聲明為非static的(考慮重寫(xiě)),要么都聲明為static的(不是重寫(xiě))。

注意:A 父類(lèi)的靜態(tài)方法不能被子類(lèi)覆蓋為非靜態(tài)方法。 B 父類(lèi)的靜態(tài)方法不能被子類(lèi)覆蓋為靜態(tài)方法。(這兩點(diǎn)與上面的那句話(huà)表達(dá)的是一個(gè)意思)

E.靜態(tài)方法不能被重寫(xiě)

原因:重寫(xiě)依賴(lài)于類(lèi)的實(shí)例,而靜態(tài)方法和類(lèi)實(shí)例并沒(méi)有什么關(guān)系。而且靜態(tài)方法和類(lèi)實(shí)例并沒(méi)有什么關(guān)系。而且靜態(tài)方法在編譯時(shí)就已經(jīng)確定,而方法重寫(xiě)是在運(yùn)行時(shí)確定的(動(dòng)態(tài)綁定)。(也可以說(shuō)java多態(tài)體現(xiàn)在運(yùn)行時(shí)、而static在編譯時(shí)、與之相悖)

《JAVA編程思想》中多次的提到:方法是靜態(tài)的、他的行為就不具有多態(tài)性。靜態(tài)方法是與類(lèi)、而非單個(gè)對(duì)象相關(guān)聯(lián)的。

區(qū)分方法的重載和重寫(xiě)

重載:不表現(xiàn)為多態(tài)性。

重寫(xiě):表現(xiàn)為多態(tài)性。

從編譯和運(yùn)行的角度來(lái)看:

重載,是指允許存在多個(gè)同名方法,而這些方法的參數(shù)不同。編譯器根據(jù)方法不同的參數(shù)列表,對(duì)同名方法的名稱(chēng)做修飾。對(duì)于編譯器而言,這些同名方法就成了不同的方法。他們的調(diào)用地址在編譯期間就綁定了。Java的重載是可以包括父類(lèi)和子類(lèi)的,即子類(lèi)可以重載父類(lèi)的同名不同參數(shù)的方法。

所以:對(duì)于重載而言,在方法調(diào)用之前,編譯器就已經(jīng)確定了所要調(diào)用的方法,這稱(chēng)為“早綁定”或“靜態(tài)綁定”;

而對(duì)于多態(tài),只有等到方法調(diào)用的那一刻,解釋運(yùn)行器才會(huì)確定所要調(diào)用的具體方法,這稱(chēng)為“晚綁定”或“動(dòng)態(tài)綁定”;

引用一句Bruce Eckel的話(huà):“不要犯傻,如果它不是晚綁定,它就不是多態(tài)?!?/p>

重寫(xiě)規(guī)則補(bǔ)充

1.父類(lèi)的抽象方法可以被子類(lèi)通過(guò)兩種途徑重寫(xiě)(即實(shí)現(xiàn)和重寫(xiě))。

2.父類(lèi)的非抽象方法可以被重寫(xiě)為抽象方法(此時(shí):子類(lèi)必須為抽象類(lèi))。

到此這篇關(guān)于Java構(gòu)造器方法深入理解的文章就介紹到這了,更多相關(guān)Java 構(gòu)造器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于JavaEE匿名內(nèi)部類(lèi)和Lambda表達(dá)式的注意事項(xiàng)

    關(guān)于JavaEE匿名內(nèi)部類(lèi)和Lambda表達(dá)式的注意事項(xiàng)

    這篇文章主要介紹了關(guān)于JavaEE匿名內(nèi)部類(lèi)和Lambda表達(dá)式的注意事項(xiàng),匿名內(nèi)部類(lèi)顧名思義是沒(méi)有修飾符甚至沒(méi)有名稱(chēng)的內(nèi)部類(lèi),使用匿名內(nèi)部類(lèi)需要注意哪些地方,我們一起來(lái)看看吧
    2023-03-03
  • SPRING BOOT啟動(dòng)命令參數(shù)及源碼詳析

    SPRING BOOT啟動(dòng)命令參數(shù)及源碼詳析

    這篇文章主要給大家介紹了關(guān)于SPRING BOOT啟動(dòng)命令參數(shù)及源碼分析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用SPRING BOOT具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Spring定時(shí)任務(wù)注解@Scheduled詳解

    Spring定時(shí)任務(wù)注解@Scheduled詳解

    這篇文章主要介紹了Spring定時(shí)任務(wù)注解@Scheduled詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個(gè)注解,主要是用來(lái)開(kāi)啟定時(shí)任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下
    2023-09-09
  • Java對(duì)象序列化操作詳解

    Java對(duì)象序列化操作詳解

    這篇文章主要介紹了Java對(duì)象序列化操作,簡(jiǎn)單描述了Java序列化相關(guān)概念、原理并結(jié)合實(shí)例形式總結(jié)分析了常見(jiàn)序列化操作相關(guān)定于與使用技巧,需要的朋友可以參考下
    2018-09-09
  • 解析springboot包裝controller返回值問(wèn)題

    解析springboot包裝controller返回值問(wèn)題

    這篇文章主要介紹了springboot包裝controller返回值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Spring Boot與Kotlin處理Web表單提交的方法

    Spring Boot與Kotlin處理Web表單提交的方法

    本篇文章主要介紹了Spring Boot 與 Kotlin 處理Web表單提交的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Spring?Boot+微信小程序開(kāi)發(fā)平臺(tái)保存微信登錄者的個(gè)人信息

    Spring?Boot+微信小程序開(kāi)發(fā)平臺(tái)保存微信登錄者的個(gè)人信息

    這篇文章主要介紹了Spring?Boot+微信小程序開(kāi)發(fā)平臺(tái)保存微信登錄者的個(gè)人信息,本文主要介紹?wx.login和wx.getProfile接口,因篇幅所限,不能對(duì)其它接口做詳細(xì)介紹?,有興趣者可以查閱官方文檔
    2022-05-05
  • JAVA使用DBUtils操作數(shù)據(jù)庫(kù)

    JAVA使用DBUtils操作數(shù)據(jù)庫(kù)

    這篇文章主要介紹了JAVA使用DBUtils操作數(shù)據(jù)庫(kù)的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家學(xué)習(xí)JAVA,感興趣的朋友可以了解下
    2020-07-07
  • Spring Boot 2.5.0 重新設(shè)計(jì)的spring.sql.init 配置有啥用

    Spring Boot 2.5.0 重新設(shè)計(jì)的spring.sql.init 配置有啥用

    前幾天Spring Boot 2.5.0發(fā)布了,其中提到了關(guān)于Datasource初始化機(jī)制的調(diào)整,有讀者私信想了解這方面做了什么調(diào)整。那么今天就要詳細(xì)說(shuō)說(shuō)這個(gè)重新設(shè)計(jì)的配置內(nèi)容,并結(jié)合實(shí)際情況說(shuō)說(shuō)我的理解和實(shí)踐建議
    2021-05-05
  • 使用Runtime 調(diào)用Process.waitfor導(dǎo)致的阻塞問(wèn)題

    使用Runtime 調(diào)用Process.waitfor導(dǎo)致的阻塞問(wèn)題

    這篇文章主要介紹了使用Runtime 調(diào)用Process.waitfor導(dǎo)致的阻塞問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論