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

深入淺析Java 抽象類和接口

 更新時(shí)間:2021年11月16日 16:29:29   作者:WYSCODER  
這篇文章主要介紹了Java 抽象類和接口的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、抽象類

1.抽象類

1.1抽象類的定義

在Java面向?qū)ο螽?dāng)中,所有的對(duì)象都是用過類進(jìn)行描繪的,但是并不是所有的類都是用來描繪對(duì)象的,如果一個(gè)類沒有包含足夠多的信息來描述一個(gè)具體的對(duì)象,這樣的類就是抽象類。

1.2抽象方法的定義方式

public abstract 返回值類型 方法名(參數(shù));

1.3抽象類的定義方式

abstract class 類名 {

}

2.抽象類和實(shí)例類的區(qū)別

抽象類不可以實(shí)例化對(duì)象實(shí)例類可以實(shí)例化對(duì)象

3.抽象類示例

定義一個(gè)抽象類People,在類中定義一個(gè)方法work,不確定人怎么工作,可以定義成抽象方法,來解決父類方法的不確定性。抽象方法不能在父類中實(shí)現(xiàn),所以沒有函數(shù)體。那么在后續(xù)繼承時(shí),要在子類中重寫該方法,要具體實(shí)現(xiàn)該方法。 注意:抽象類中可以包含抽象方法,包含抽象方法的類一定要定義成抽象類。

public abstract class People {
    String name;
    int age;


    public abstract void work();
}

定義一個(gè)Student類繼承抽象類People。一個(gè)子類繼承一個(gè)抽象類,必須重寫這個(gè)抽象類中的所有抽象方法,否則就把子類定義成一個(gè)抽象類。

public class Student extends People{
    int score;
    int stu_id;

    //重寫繼承抽象類當(dāng)中的work方法
    @Override
    public void work() {
        System.out.println("好好學(xué)習(xí)!年薪百萬,迎娶白富美?。?!");
    }
}

定義一個(gè)測試類TestDemo。

public class TestDemo {
    public static void main(String[] args) {
        People p = new Student();
        p.work();
    }
}

運(yùn)行觀察運(yùn)行結(jié)果。

在這里插入圖片描述

多態(tài)的使用,基類的引用變量引用派生類的對(duì)象,調(diào)用work方法,實(shí)現(xiàn)的是派生類Student類中對(duì)其抽象基類重寫的work方法。

4.抽象類的特征

①抽象類不能實(shí)例化對(duì)象,所以抽象類必須被繼承才能使用,其他的功能和普通類相同。 ②一個(gè)類只能繼承一個(gè)抽象類。其實(shí)在Java中一個(gè)類只能繼承一個(gè)類,不管它的父類是不是抽象類。下面圖示解釋一下。

在這里插入圖片描述

如果允許多繼承,在圖示中,D類同時(shí)繼承了B類和C類,那么在D類中同時(shí)出現(xiàn)了兩個(gè)一毛一樣的實(shí)例變量a,這是不允許的,因?yàn)樵谕粋€(gè)作用域中不能重復(fù)定義實(shí)例變量。因此在Java中只能單一繼承,即一個(gè)類只能有一個(gè)父類。 ③抽象類的修飾符不能是private。 ④抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。 ⑤構(gòu)造方法,類方法不能聲明為抽象方法。 ⑥抽象類的子類必須給出抽象類中的抽象方法的具體實(shí)現(xiàn),除非該子類也是抽象類。

二、接口

1.接口

1.1接口的定義

在軟件工程中,接口泛指供別人調(diào)用的方法。在Java中接口是一個(gè)抽象類型,比抽象類更加抽象,是抽象方法的集合。一個(gè)類通過繼承接口的方式,從而繼承接口的抽象方法。從定義上看,接口只是一個(gè)集合,并不是類。類描述了屬性和方法,而接口只包含方法(未實(shí)現(xiàn)的方法)和常量。

1.1定義一個(gè)接口

public interface 接口名稱 {
//聲明常量
//抽象方法
}

如下:

在這里插入圖片描述

①接口的變量會(huì)被隱式的指定為public static final 變量(并且只能是public static final變量,用private修飾會(huì)編譯報(bào)錯(cuò)) ②接口的方法會(huì)被隱式的指定為public abstract 方法。

在接口中定義變量可以省略或少些修飾符,因?yàn)榈讓訒?huì)給你補(bǔ)全,但是不允許寫錯(cuò)。

1.2 接口的使用

類名 implements 接口名稱[, 其他接口名稱, 其他接口名稱…, …]

在Java中一個(gè)類雖然只能繼承一個(gè)類,但是一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。也就是說單一繼承,多實(shí)現(xiàn)。

1.3接口的注意事項(xiàng)

①接口中所有的方法不能有具體的實(shí)現(xiàn),也就是說,接口中的方法必須都是抽象方法。從這里可以隱約看出接口和抽象類的區(qū)別,接口是一種極度抽象的類型,它比抽象類更加“抽象”,并且一般情況下不在接口中定義變量。 ②在抽象類中,可以包含一個(gè)或多個(gè)抽象方法,但是在接口中,所有的方法必須是抽象的,不能有方法體,比抽象類更加的抽象。接口規(guī)定一個(gè)類必須做什么而不規(guī)定他如何去做。

2.接口示例

定義一個(gè)接口A

public interface A {
    //聲明常量
    final int a = 10;
    //抽象方法
    public abstract void fun();
}

定義一個(gè)B類實(shí)施接口A

public class B implements A {
    //對(duì)接口A里面的抽象方法重寫
    @Override
    public void fun() {
        System.out.println("重寫fun()");
    }
}

定義一個(gè)TestDemo測試類實(shí)現(xiàn)調(diào)用

public class TestDemo {
    public static void main(String[] args) {
        B b = new B();
        b.fun();

        //多態(tài) 基接口的引用 引用 實(shí)現(xiàn)該接口的對(duì)象
        A a = new B();
        a.fun();
    }
}

在這里插入圖片描述

注意:如果一個(gè)普通類要同時(shí)繼承一個(gè)類和實(shí)現(xiàn)接口,應(yīng)該先繼承后實(shí)現(xiàn),否則就會(huì)語法報(bào)錯(cuò)。例如:public class A extends B implements C,D E…

3.接口的特征

①接口中只定義抽象方法,這些方法默認(rèn)都是public abstract的,在方法聲明時(shí)可以省略這些修飾符。 ②在接口中定義實(shí)例變量,非抽象實(shí)例方法以及靜態(tài)方法都是不允許的。 ③接口中沒有構(gòu)造方法,也不能被實(shí)例化。 ④一個(gè)接口不能實(shí)現(xiàn)另一個(gè)接口,但是可以多繼承其他接口。 ⑤接口必須通過類來實(shí)現(xiàn)它的抽象方法。 ⑥如果一個(gè)類不能實(shí)現(xiàn)完接口中的抽象方法,那么這個(gè)類我們應(yīng)該設(shè)計(jì)為抽象類。 ⑦不允許創(chuàng)建接口的實(shí)例,但是允許定義接口類型的引用變量引用實(shí)現(xiàn)該接口的類的實(shí)例(多態(tài))

三、抽象類和接口的區(qū)別

①抽象類可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié),而接口中只能存在public abstract 方法; ②抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final類型的; ③接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法; ④一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口;

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

相關(guān)文章

最新評(píng)論

彭州市| 招远市| 洪江市| 卢龙县| 茶陵县| 英吉沙县| 治县。| 鹿邑县| 武穴市| 井冈山市| 阳西县| 洪江市| 莱芜市| 沅陵县| 美姑县| 宜都市| 台前县| 青浦区| 互助| 什邡市| 定陶县| 大连市| 邯郸县| 和平县| 长岭县| 泸定县| 仪征市| 大厂| 襄城县| 航空| 洛阳市| 武清区| 平和县| 抚宁县| 石城县| 财经| 芜湖县| 留坝县| 驻马店市| 靖州| 手游|