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

Java面向?qū)ο笾^承的概念詳解

 更新時(shí)間:2023年04月28日 11:00:08   作者:黑洞曉威  
這篇文章主要介紹了Java面向?qū)ο笾^承的概念詳解,Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,繼承是實(shí)現(xiàn)面向?qū)ο缶幊痰幕A(chǔ)之一。通過(guò)繼承,我們可以使代碼更具可讀性、可重用性和可維護(hù)性,從而提高程序的效率和可靠性,需要的朋友可以參考下

1. 繼承

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

  • 繼承的概念

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

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

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

  • 繼承帶來(lái)的好處

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

  • 示例代碼
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)建對(duì)象,調(diào)用方法
        Fu f = new Fu();
        f.show();

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

1.2 繼承的好處和弊端

  • 繼承好處
    • 提高了代碼的復(fù)用性(多個(gè)類(lèi)相同的成員可以放到同一個(gè)類(lèi)中)
    • 提高了代碼的維護(hù)性(如果方法的代碼需要修改,修改一處即可)
  • 繼承弊端
    • 繼承讓類(lèi)與類(lèi)之間產(chǎn)生了關(guān)系,類(lèi)的耦合性增強(qiáng)了,當(dāng)父類(lèi)發(fā)生變化時(shí)子類(lèi)實(shí)現(xiàn)也不得不跟著變化,削弱了子類(lèi)的獨(dú)立性
  • 繼承的應(yīng)用場(chǎng)景:
    • 使用繼承,需要考慮類(lèi)與類(lèi)之間是否存在is…a的關(guān)系,不能盲目使用繼承
      • is…a的關(guān)系:誰(shuí)是誰(shuí)的一種,例如:老師和學(xué)生是人的一種,那人就是父類(lèi),學(xué)生和老師就是子類(lèi)

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

  • Java中繼承的特點(diǎn)
  1. Java中類(lèi)只支持單繼承,不支持多繼承
    • 錯(cuò)誤范例:class A extends B, C { }
  2. Java中類(lèi)支持多層繼承
  • 多層繼承示例代碼:
public class Granddad {

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

}

public class Father extends Granddad {

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

}

public class Mother {

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

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

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

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

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

  • 子類(lèi)局部范圍找
  • 子類(lèi)成員范圍找
  • 父類(lèi)成員范圍找
  • 如果都沒(méi)有就報(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:代表本類(lèi)對(duì)象的引用
  • super:代表父類(lèi)存儲(chǔ)空間的標(biāo)識(shí)(可以理解為父類(lèi)對(duì)象引用)
  • this和super的使用分別
    • 成員變量:
      • this.成員變量 - 訪問(wèn)本類(lèi)成員變量
      • super.成員變量 - 訪問(wèn)父類(lèi)成員變量
    • 成員方法:
      • this.成員方法 - 訪問(wèn)本類(lèi)成員方法
      • super.成員方法 - 訪問(wèn)父類(lèi)成員方法
    • 構(gòu)造方法:
      • this(…) - 訪問(wèn)本類(lèi)構(gòu)造方法
      • super(…) - 訪問(wèn)父類(lèi)構(gòu)造方法

2.3 方法重寫(xiě)

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

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

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

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

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

  • 私有方法不能被重寫(xiě)(父類(lèi)私有成員子類(lèi)是不能繼承的)
  • 子類(lèi)方法訪問(wèn)權(quán)限不能更低(public > 默認(rèn) > 私有)
  • 靜態(tài)方法不能被重寫(xiě),如果子類(lèi)也有相同的方法,并不是重寫(xiě)的父類(lè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ò)】,子類(lèi)不能重寫(xiě)父類(lèi)私有的方法*/
    @Override
    private void show() {
        System.out.println("Zi中show()方法被調(diào)用");
    }
   
    /* 編譯【出錯(cuò)】,子類(lèi)重寫(xiě)父類(lèi)方法的時(shí)候,訪問(wèn)權(quán)限需要大于等于父類(lèi) */
    @Override
    private void method() {
        System.out.println("Zi中method()方法被調(diào)用");
    }

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

到此這篇關(guān)于Java面向?qū)ο笾^承的概念詳解的文章就介紹到這了,更多相關(guān)Java面向?qū)ο蟮睦^承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

阿图什市| 新化县| 莒南县| 叙永县| 宁城县| 长治市| 和林格尔县| 射阳县| 靖宇县| 朝阳县| 疏勒县| 阜新| 化隆| 平谷区| 高碑店市| 彰化县| 大新县| 沂源县| 南城县| 北宁市| 灵丘县| 驻马店市| 芜湖县| 昭苏县| 泉州市| 肃南| 临海市| 岚皋县| 缙云县| 罗定市| 饶河县| 宜城市| 合川市| 民乐县| 宝山区| 梧州市| 武定县| 巧家县| 平顺县| 海兴县| 芜湖县|