溫馨提示×

溫馨提示×

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

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

Java面向?qū)ο笾^承的概念是什么

發(fā)布時(shí)間:2023-04-28 11:13:39 來源:億速云 閱讀:110 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Java面向?qū)ο笾^承的概念是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Java面向?qū)ο笾^承的概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

1. 繼承

1.1 繼承的實(shí)現(xiàn)

  • 繼承的概念

繼承是面向?qū)ο笕筇卣髦?,可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,以及追加屬性和方法

  • 實(shí)現(xiàn)繼承的格式

繼承通過extends實(shí)現(xiàn)格式:class 子類 extends 父類 { } 舉例:class Dog extends Animal { }

  • 繼承帶來的好處

繼承可以讓類與類之間產(chǎn)生關(guān)系,子父類關(guān)系,產(chǎn)生子父類后,子類則可以使用父類中非私有的成員。

  • 示例代碼

public class Fu {
    public void show() {
        System.out.println("show方法被調(diào)用");
    }
}
public class Zi extends Fu {
    public void method() {
        System.out.println("method方法被調(diào)用");
    }
}
public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建對象,調(diào)用方法
        Fu f = new Fu();
        f.show();

        Zi z = new Zi();
        z.method();
        z.show();
    }
}

1.2 繼承的好處和弊端

  • 繼承好處

    • 提高了代碼的復(fù)用性(多個(gè)類相同的成員可以放到同一個(gè)類中)

    • 提高了代碼的維護(hù)性(如果方法的代碼需要修改,修改一處即可)

  • 繼承弊端

    • 繼承讓類與類之間產(chǎn)生了關(guān)系,類的耦合性增強(qiáng)了,當(dāng)父類發(fā)生變化時(shí)子類實(shí)現(xiàn)也不得不跟著變化,削弱了子類的獨(dú)立性

  • 繼承的應(yīng)用場景:

    • is…a的關(guān)系:誰是誰的一種,例如:老師和學(xué)生是人的一種,那人就是父類,學(xué)生和老師就是子類

    • 使用繼承,需要考慮類與類之間是否存在is…a的關(guān)系,不能盲目使用繼承

1.3. Java中繼承的特點(diǎn)

  • Java中繼承的特點(diǎn)

  1. Java中類只支持單繼承,不支持多繼承

    • 錯(cuò)誤范例:class A extends B, C { }

  2. Java中類支持多層繼承

  • 多層繼承示例代碼:

public class Granddad {

    public void drink() {
        System.out.println("爺爺愛喝酒");
    }

}

public class Father extends Granddad {

    public void smoke() {
        System.out.println("爸爸愛抽煙");
    }

}

public class Mother {

    public void dance() {
        System.out.println("媽媽愛跳舞");
    }

}
public class Son extends Father {
	// 此時(shí),Son類中就同時(shí)擁有drink方法以及smoke方法
}

2. 繼承中的成員訪問特點(diǎn)

2.1 繼承中變量的訪問特點(diǎn)

在子類方法中訪問一個(gè)變量,采用的是就近原則。

  • 子類局部范圍找

  • 子類成員范圍找

  • 父類成員范圍找

  • 如果都沒有就報(bào)錯(cuò)(不考慮父親的父親…)

示例代碼

class Fu {
    int num = 10;
}
class Zi {
    int num = 20;
    public void show(){
        int num = 30;
        System.out.println(num);
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Zi z = new Zi();
        z.show();	// 輸出show方法中的局部變量30
    }
}

2.2 super

this&super關(guān)鍵字:

  • this:代表本類對象的引用

  • super:代表父類存儲空間的標(biāo)識(可以理解為父類對象引用)

  • this和super的使用分別

    • this(…) - 訪問本類構(gòu)造方法

    • super(…) - 訪問父類構(gòu)造方法

    • this.成員方法 - 訪問本類成員方法

    • super.成員方法 - 訪問父類成員方法

    • this.成員變量 - 訪問本類成員變量

    • super.成員變量 - 訪問父類成員變量

    • 成員變量:

    • 成員方法:

    • 構(gòu)造方法:

2.3 方法重寫

1、方法重寫概念 子類出現(xiàn)了和父類中一模一樣的方法聲明(方法名一樣,參數(shù)列表也必須一樣)

2、方法重寫的應(yīng)用場景 當(dāng)子類需要父類的功能,而功能主體子類有自己特有內(nèi)容時(shí),可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內(nèi)容

3、Override注解 用來檢測當(dāng)前的方法,是否是重寫的方法,起到【校驗(yàn)】的作用

2.4 方法重寫的注意事項(xiàng)

方法重寫的注意事項(xiàng)

  • 私有方法不能被重寫(父類私有成員子類是不能繼承的)

  • 子類方法訪問權(quán)限不能更低(public > 默認(rèn) > 私有)

  • 靜態(tài)方法不能被重寫,如果子類也有相同的方法,并不是重寫的父類的方法

示例代碼

public class Fu {
    private void show() {
        System.out.println("Fu中show()方法被調(diào)用");
    }

    void method() {
        System.out.println("Fu中method()方法被調(diào)用");
    }
}

public class Zi extends Fu {

    /* 編譯【出錯(cuò)】,子類不能重寫父類私有的方法*/
    @Override
    private void show() {
        System.out.println("Zi中show()方法被調(diào)用");
    }
   
    /* 編譯【出錯(cuò)】,子類重寫父類方法的時(shí)候,訪問權(quán)限需要大于等于父類 */
    @Override
    private void method() {
        System.out.println("Zi中method()方法被調(diào)用");
    }

    /* 編譯【通過】,子類重寫父類方法的時(shí)候,訪問權(quán)限需要大于等于父類 */
    @Override
    public void method() {
        System.out.println("Zi中method()方法被調(diào)用");
    }
}

讀到這里,這篇“Java面向?qū)ο笾^承的概念是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI