1:重寫的兩同兩小一大原則
兩同:方法名相同、參數(shù)列表相同
兩小:返回值類型為基本類型時(shí),子類方法的返回值必須和父類相同
返回值為引用類型時(shí):子類方法的返回類型必須小于父類
子類方法的拋出異常必須小于或者等于父類
一大:子類方法的訪問權(quán)限必須大于或等于父類
2:重寫重載的區(qū)別
重載和重寫都是Java多態(tài)性的體現(xiàn);
Overload:
重載是處于同一個(gè)類當(dāng)中的、方法名相同、參數(shù)列表(類型,個(gè)數(shù),順序)不同,重載和返回類型無關(guān)
Override:
重寫是子類將父類的方法進(jìn)行重寫,以適應(yīng)要求更高的功能,原則遵從兩同兩小一大原則
3:抽象類和接口的區(qū)別
接口是公開的,不公開則沒有意義。接口中不能定義私有方法或者成員變量,也不能實(shí)現(xiàn)方法。繼承或者實(shí)現(xiàn)接口的類必須重寫接口中所有的方法,接口可以實(shí)現(xiàn)多重繼承
抽象類可以設(shè)置權(quán)限限制,不一定非要公開。抽象類除了可以定義抽象方法外還可以定義成員變量和普通方法或私有方法。另外抽象類不能多重繼承,它只有一個(gè)超類,不過和其他普通類一樣可以繼承多個(gè)接口。
4:值傳遞和引用傳遞
Java當(dāng)中只存在值傳遞的概念,沒有引用傳遞。之所以稱為引用傳遞,是因?yàn)楫?dāng)我們?cè)诙褏^(qū)new一個(gè)對(duì)象的時(shí)候,將它的引用存在棧區(qū),通過操作引用來間接的操作對(duì)象。而當(dāng)我們將這個(gè)引用作為參數(shù)時(shí),實(shí)際是將地址復(fù)制一份作為參數(shù)傳了進(jìn)來,它同樣還是指向?qū)ο蟮模詫?duì)這個(gè)引用所做的操作同樣會(huì)改變對(duì)象的屬性。
基本數(shù)據(jù)類型存在棧區(qū),作為參數(shù)時(shí)將其復(fù)制后傳進(jìn)方法中,對(duì)它進(jìn)行處理和改變不會(huì)影響其原來的初始值。