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

詳解Java的繼承

 更新時間:2022年01月16日 14:12:18   作者:zhongs11  
大家好,本篇文章主要講的是詳解Java的繼承,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

繼承:

把多個類相同的內(nèi)容提取到另外一個類中,然后使用關(guān)鍵字extends來實現(xiàn)繼承

繼承的好處:

1.提高了代碼的復(fù)用性

2.提高了代碼的維護性 只需要修改父類的內(nèi)容

3.讓類與類之間產(chǎn)生了繼承關(guān)系,為了后面的多態(tài)做鋪墊,要有繼承才能做多態(tài)

繼承的壞處:

1.類的耦合性增強了,一個父類改變了,子類也跟著改變

2.只可以單個繼承,不可以多個繼承,可以多層繼承,子繼承父,父繼承爺爺

//可以多層繼承
class GrandFather{
}
class Father extends GrandFather{
}
class Son extends Father{
}
//不可以多個繼承,比如
class Son extends Father,Mother{
}

繼承的特點:

1.要想初始化子類 必須先初始化父類 ,先有父親 才能有兒子

2.子類只能繼承父類的非私有的成員,

可以通過下面的案例的代碼和注釋來理解

class Father2{
    int num = 20;
    Father2(){
        System.out.println("這是父親的無參構(gòu)造方法");
    }
    private void fun1(){
        System.out.println(num);
    }
}
class Son2 extends Father2 {
    public void fun2() {
        System.out.println(num);
//        System.out.println(num2);
//        子類不能繼承父類的私有成員變量
    }
}
public class ExtendsDemo2 {
    public static void main(String[] args) {
        Son2 son2 = new Son2();
        son2.fun2();//父親的構(gòu)造方法也執(zhí)行了,要想初始化子類,必須先初始化父類
        //運行結(jié)果:這是父親的無參構(gòu)造方法,20
        //son2.fun1();
        //不可以訪問父類的私有成員方法
    }
}

3.子類不能繼承父類的構(gòu)造方法,構(gòu)造方法是屬于該類本身的,但是可以通過super關(guān)鍵字訪問父類的構(gòu)造方法,因為要想初始化子類,必須先初始化父類,是通過構(gòu)造方法進行初始化的

4.不要為了部分功能而使用繼承,當兩個類語法滿足什么是什么,可以用繼承,比如狗、貓、老虎都是動物。

繼承和成員變量之間的關(guān)系:

a.當子類的成員變量和父類中的成員變量名字一樣時,

查找:1.先在方法的局部范圍內(nèi)進行查找,如果找到就返回

2.如果在方法局部范圍找不到,去本類成員位置(成員變量)上查找,如果找到就返回

3.如果在成員位置上也找不到,去父類成員位置中查找,如果找到就返回

4.如果在父類成員位置找不到,報錯

b.當子類的成員變量和父類的成員變量名字不一樣:名字是誰就訪問誰

this關(guān)鍵字和super關(guān)鍵字的區(qū)別

區(qū)別:this代表的是調(diào)用該類的當前對象 ,super代表的是父類存儲空間的標識(父類的引用,可以操作父類的成員)

使用方法:

1.訪問成員變量 this.成員變量訪問的是本類中的成員變量,super.成員變量訪問的是父類中的成員變量

//用this和super關(guān)鍵字訪問本類和父類中的成員變量
class Father3{
    int num= 10;
}
class  Son3 extends Father3{
    int num = 20;
    public void show(){
        int num= 30;
        System.out.println(num);
        System.out.println(this.num);
        System.out.println(super.num);
    }
}
public class ExtendsDemo3 {
    public static void main(String[] args) {
        Son3 son3 = new Son3();
        son3.show();
    }
}

2.訪問構(gòu)造方法

要想初始化子類,必選先初始化父類 ,因為子類會繼承父類的數(shù)據(jù),甚至可能會使用父類的

數(shù)據(jù),所以在子類初始化之前,一定會先完成父類的初始化

注意: 每個子類的構(gòu)造方法的第一句話默認是super()

//這個案例執(zhí)行出,會先訪問父類的無參構(gòu)造方法,再訪問子類的帶參構(gòu)造方法
class Father8 {
    int age;
    Father8() {
        System.out.println("父類中的無參構(gòu)造方法");
    }
    Father8(String s) {
        System.out.println("這是父類帶參數(shù)的構(gòu)造方法" + s);
    }
}
class Son8 extends Father8 {
    Son8() {
        System.out.println("子類的無參構(gòu)造方法");
    }
    Son8(String s) {
        System.out.println("子類帶參數(shù)的構(gòu)造方法" + s);
    }
}
public class ExtendsDemo7 {
    public static void main(String[] args) {
        Son8 s1 = new Son8("小王");
    }
}

上面這個案例執(zhí)行結(jié)果,會先訪問父類的無參構(gòu)造方法,再訪問子類的帶參構(gòu)造方法,因為在子類的無參構(gòu)造方法里面有一個隱藏super();,會指引我們先訪問父類的無參構(gòu)造方法,如果我們要訪問父類的帶參構(gòu)造方法,我們需要手寫一個super(參數(shù));來指引訪問父類的帶參構(gòu)造方法。

3.訪問成員方法:this.成員方法(),super.成員方法()

1、當子類的成員方法名與父類成員方法名不一樣的時候,該調(diào)用誰就調(diào)用誰的

2、當子類的成員方法名與父類成員方法名一樣的時候,怎么辦呢?(就近原則)
    1)現(xiàn)在本類中查找,如果有就調(diào)用,如果沒有去父類中查找,
    2)如果父類中有方法,就調(diào)用父類的
    3)如果連父類中都沒有要調(diào)用的方法名,報錯,提示找不到方法。

方法的重寫:

如果子類的方法聲明和父類的方法聲明一樣,這樣的現(xiàn)象叫方法的重寫,重寫現(xiàn)象是發(fā)生在繼承的關(guān)系中的,子類和父類的方法聲明一樣,但是實現(xiàn)的結(jié)果不一樣。比如:我在父類中書寫一個study方法,輸出“學(xué)習(xí)java”,在子類中也書寫一個聲明一樣的study方法,輸出“學(xué)習(xí)高等數(shù)學(xué)”,在這里雖然父類和子類的聲明一樣,但是我們最終的實現(xiàn)不一樣,這就叫方法的重寫。

總結(jié)

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

相關(guān)文章

  • Java中的異常測試框架JUnit使用上手指南

    Java中的異常測試框架JUnit使用上手指南

    這篇文章主要介紹了Java的異常測試框架JUnit使用上手指南,JUnit是Java代碼進行單元測試中的常用工具,需要的朋友可以參考下
    2016-03-03
  • SpringCloudStream中的消息分區(qū)數(shù)詳解

    SpringCloudStream中的消息分區(qū)數(shù)詳解

    這篇文章主要介紹了SpringCloudStream中的消息分區(qū)數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 全面分析Java文件上傳

    全面分析Java文件上傳

    本片文章給大家詳細分析了Java文件上傳的相關(guān)知識點,以及相關(guān)代碼做了詳細分析,有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • python 與HFSS聯(lián)合仿真的教程講解

    python 與HFSS聯(lián)合仿真的教程講解

    這篇文章主要介紹了python 與HFSS聯(lián)合仿真的教程講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Java設(shè)計模式單例模式(Singleton)用法解析

    Java設(shè)計模式單例模式(Singleton)用法解析

    這篇文章主要介紹了Java設(shè)計模式單例模式(Singleton)用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java中對list元素進行排序的方法詳解

    Java中對list元素進行排序的方法詳解

    這篇文章主要介紹了Java中對list元素進行排序的方法詳解,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • 解決mybatis中resultType取出數(shù)據(jù)順序不一致的問題

    解決mybatis中resultType取出數(shù)據(jù)順序不一致的問題

    這篇文章主要介紹了解決mybatis中resultType取出數(shù)據(jù)順序不一致的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Springboot項目與vue項目整合打包的實現(xiàn)方式

    Springboot項目與vue項目整合打包的實現(xiàn)方式

    這篇文章主要介紹了Springboot項目與vue項目整合打包的實現(xiàn)方式,本文通過兩種方式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 如何安裝java的運行環(huán)境IDEA

    如何安裝java的運行環(huán)境IDEA

    這篇文章主要介紹了如何安裝java的運行環(huán)境IDEA,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Springboot日志配置的實現(xiàn)示例

    Springboot日志配置的實現(xiàn)示例

    本文主要介紹了Springboot日志配置的實現(xiàn)示例,使用slf4j和logback的方式記錄日志,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08

最新評論

湘乡市| 霸州市| 华阴市| 大连市| 安溪县| 西青区| 梁山县| 福州市| 乐昌市| 绥阳县| 海南省| 泗阳县| 西青区| 腾冲县| 南靖县| 沧州市| 高台县| 个旧市| 丹寨县| 平顶山市| 金沙县| 章丘市| 绥棱县| 平泉县| 内江市| 北票市| 高雄县| 潞西市| 珲春市| 米脂县| 龙口市| 元谋县| 定兴县| 许昌县| 探索| 邵阳市| 岫岩| 神农架林区| 共和县| 孝感市| 彰化县|