最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

重載

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

因為構(gòu)造器的名字必須與類名相同,所以同一個類的所有構(gòu)造器名肯定相同,構(gòu)成重載;為了讓系統(tǒng)能區(qū)分不同的構(gòu)造器,多個構(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.定義:在同一個類中,允許存在一個以上的同名方法,只要他們的參數(shù)個數(shù)或者參數(shù)類型不同即可。

兩同一不同”:同一個類、相同方法名

參數(shù)列表不同:參數(shù)個數(shù)不同,參數(shù)類型不同

2.舉例:

Arrays類中重載的sort() / binarySearch()

3.判斷是否重載:

跟方法的權(quán)限修飾符、返回值類型、形參變量名、方法體都沒有關(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){//與方法體無關(guān)?。。?!
        return 0;
    }
    public void getSum(int m,int n){//與參數(shù)名無關(guān)?。。。?
    
    }
    private void getSum(int i,int j){//與權(quán)限修飾符大小無關(guān)?。。?!
    
    }
}

4.在通過對象調(diào)用方法時,如何確定某一個指定的方法 :

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

重寫

為什么要重寫:父類的功能無法滿足子類的需求

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

應用:重寫以后,當創(chuàng)建子類對象以后,通過子類對象調(diào)用子父類的同名參數(shù)的方法時,實際執(zhí)行的時子類重寫父類的方法

重寫的規(guī)定:

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

//方法體

}

約定俗稱:子類中的叫重寫的方法,父類中的叫被重寫的方法

A. 子類重寫的方法的方法名和形參列表與父類被重寫的方法的方法名和形參列表相同

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

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

C. 返回值類型:

>父類被重寫的方法的返回值類型是void,則子類重寫的方法的返回值類型只能是void

>父類被重寫的方法的返回值類型是A類型,則子類重寫的方法的返回值類型可以是A類或A的子類

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

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

D.子類重寫的方法拋出的異常類型不大于父類被重寫的方法拋出的異常類型.(可以拋出異常類型更少、異常類型更小、不拋出異常)

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

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

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

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

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

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

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

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

從編譯和運行的角度來看:

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

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

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

引用一句Bruce Eckel的話:“不要犯傻,如果它不是晚綁定,它就不是多態(tài)。”

重寫規(guī)則補充

1.父類的抽象方法可以被子類通過兩種途徑重寫(即實現(xiàn)和重寫)。

2.父類的非抽象方法可以被重寫為抽象方法(此時:子類必須為抽象類)。

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

相關(guān)文章

  • Spring MVC中異常處理的三種方式

    Spring MVC中異常處理的三種方式

    這篇文章主要給大家介紹了關(guān)于Spring MVC中異常處理的三種方式,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring MVC具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • MyBatis typeAliases元素標簽(含注解方式)及其屬性、設(shè)置方式

    MyBatis typeAliases元素標簽(含注解方式)及其屬性、設(shè)置方式

    這篇文章主要介紹了MyBatis typeAliases元素標簽(含注解方式)及其屬性、設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中的注解機制Annotation詳解

    Java中的注解機制Annotation詳解

    這篇文章主要介紹了Java中的注解機制Annotation詳解,  Java Annotation 是 Java 語言中的一種 元數(shù)據(jù)機制,它可以在代碼中添加額外的信息,以便于程序的理解和處理,Annotation 可以用來描述類、方法、屬性等各種程序的特性,需要的朋友可以參考下
    2023-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)及算法實例:三角數(shù)字

    Java數(shù)據(jù)結(jié)構(gòu)及算法實例:三角數(shù)字

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實例:三角數(shù)字,本文直接給出實現(xiàn)代碼,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-06-06
  • Java中equals比較方法使用詳解

    Java中equals比較方法使用詳解

    這篇文章主要給大家介紹了關(guān)于Java中equals比較方法使用的相關(guān)資料,在Java中equals()方法是Object類的一個實例方法,用于比較兩個對象是否相等,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • LeetCode程序員面試題之無重復字符的最長子串

    LeetCode程序員面試題之無重復字符的最長子串

    Java計算無重復字符的最長子串是一種常見的字符串處理算法,它的目的是找出一個字符串中無重復字符的最長子串。該算法可以很好地解決一些字符串處理問題,比如尋找字符串中重復字符的位置,以及計算字符串中無重復字符的最長子串的長度。
    2023-02-02
  • java基于ConcurrentHashMap設(shè)計細粒度實現(xiàn)代碼

    java基于ConcurrentHashMap設(shè)計細粒度實現(xiàn)代碼

    這篇文章主要介紹了java基于ConcurrentHashMap設(shè)計細粒度實現(xiàn)代碼,通過ConcurrentHashMap實現(xiàn)細粒度,具有一定參考價值,需要的朋友可以了解。
    2017-10-10
  • Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys)

    Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys)

    這篇文章主要介紹了Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn)

    SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn)

    本文主要介紹了SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Java編程多線程之共享數(shù)據(jù)代碼詳解

    Java編程多線程之共享數(shù)據(jù)代碼詳解

    這篇文章主要介紹了Java編程多線程之共享數(shù)據(jù)代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02

最新評論

潍坊市| 葫芦岛市| 福鼎市| 雅江县| 达尔| 永兴县| 德化县| 上蔡县| 高青县| 新民市| 洛扎县| 麻城市| 通江县| 延吉市| 安陆市| 中江县| 吉木乃县| 保德县| 金湖县| 潼南县| 嵊泗县| 麦盖提县| 昭觉县| 宜川县| 大港区| 扎鲁特旗| 北宁市| 阳东县| 西畴县| 浠水县| 南乐县| 炎陵县| 阿巴嘎旗| 铁岭市| 麻栗坡县| 略阳县| 安庆市| 芦山县| 大理市| 茌平县| 武隆县|