亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java的繼承有哪些特點

發布時間:2022-01-17 08:58:23 來源:億速云 閱讀:127 作者:iii 欄目:開發技術

本篇內容主要講解“Java的繼承有哪些特點”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java的繼承有哪些特點”吧!

    繼承:

    把多個類相同的內容提取到另外一個類中,然后使用關鍵字extends來實現繼承

    繼承的好處:

    1.提高了代碼的復用性

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

    3.讓類與類之間產生了繼承關系,為了后面的多態做鋪墊,要有繼承才能做多態

    繼承的壞處:

    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("這是父親的無參構造方法");
        }
        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();//父親的構造方法也執行了,要想初始化子類,必須先初始化父類
            //運行結果:這是父親的無參構造方法,20
            //son2.fun1();
            //不可以訪問父類的私有成員方法
        }
    }

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

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

    繼承和成員變量之間的關系:

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

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

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

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

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

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

    this關鍵字和super關鍵字的區別

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

    使用方法:

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

    //用this和super關鍵字訪問本類和父類中的成員變量
    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.訪問構造方法

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

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

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

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

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

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

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

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

    方法的重寫:

    如果子類的方法聲明和父類的方法聲明一樣,這樣的現象叫方法的重寫,重寫現象是發生在繼承的關系中的,子類和父類的方法聲明一樣,但是實現的結果不一樣。比如:我在父類中書寫一個study方法,輸出“學習java”,在子類中也書寫一個聲明一樣的study方法,輸出“學習高等數學”,在這里雖然父類和子類的聲明一樣,但是我們最終的實現不一樣,這就叫方法的重寫。

    到此,相信大家對“Java的繼承有哪些特點”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    成安县| 绥阳县| 将乐县| 南投县| 岗巴县| 衡东县| 汉沽区| 靖西县| 北票市| 延川县| 浦江县| 揭西县| 金平| 蚌埠市| 楚雄市| 灵璧县| 濮阳市| 石棉县| 镇沅| 屯门区| 盐城市| 土默特左旗| 林口县| 东海县| 溧水县| 林西县| 财经| 深州市| 志丹县| 龙门县| 临江市| 额尔古纳市| 海兴县| 马尔康县| 浠水县| 唐河县| 延庆县| 汉川市| 元氏县| 封丘县| 宽甸|