欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中接口和抽象類的區(qū)別與相同之處

 更新時間:2015年06月06日 14:48:26   投稿:junjie  
這篇文章主要介紹了Java中接口和抽象類的區(qū)別與相同之處,本文講解了抽象類的概念、接口的概念、接口和抽象類的區(qū)別與聯(lián)系等內(nèi)容,需要的朋友可以參考下

1. 抽象類:
(1).概念:抽象類是對一種事物的抽象,即對類抽。.抽象類是對整個類整體進(jìn)行抽象,包括屬性、行為。Java抽象類和Java接口一樣,都用來聲明一個新的類型。并且作為一個類型的等級結(jié)構(gòu)的起點(diǎn)。
(2).格式:

復(fù)制代碼 代碼如下:

   public abstract class abstractDemo{
            /**屬性*/
            private String name;
            /**方法*/
            public abstract void fun();
        }

(3).說明:
A:抽象類中不一定有抽象方法,但是有抽象方法的類一定要定義為抽象類。
B:在Java語言中,類有兩種,一種是具體類,另一種是抽象類。
具體類可以實(shí)例化,抽象類不可以實(shí)例化。
C:對于抽象類,如果需要添加新的方法,可以直接在抽象類中添加具體的實(shí)現(xiàn),子類可以不進(jìn)行變更;
D:抽象方法只有聲明,沒有具體的實(shí)現(xiàn)。抽象類是為了繼承而存在的,如果你定義了一個抽象類,卻不去繼承它,就等于白白的創(chuàng)建了這個類。
E:對于一個父類,如果它的一個方法在父類中實(shí)現(xiàn)沒有任何意義,必須根據(jù)子類的實(shí)際需求來進(jìn)行不同的實(shí)現(xiàn),那么就可以將這個方法聲明為abstract方法,此時這個類也就成為了abstract抽象類。
2. 接口:
(1).概念:接口是對行為的抽象。接口是對類局部(行為)進(jìn)行抽象。
(2).格式:

復(fù)制代碼 代碼如下:

  public interface test {
    /** 抽象方法 */
    public abstract void fun();
}


(3).說明:

接口中可以含有變量和方法,但是,接口中的變量會被隱式地指定為public static final。而方法會被隱式地指定為public abstract方法且只能是public abstract方法。

3. 接口和抽象類的區(qū)別與聯(lián)系:

(1).抽象類是對一種事物的抽象,即對類抽象,而接口是對行為的抽象。
(2).抽象類是對整個類整體進(jìn)行抽象,包括屬性、行為,但是接口卻是對類局部(行為)進(jìn)行抽象。
(3). 繼承是一個 “是不是”的關(guān)系,而 接口 實(shí)現(xiàn)則是 “有沒有”的關(guān)系。如果一個類繼承了某個抽象類,則子類必定是抽象類的種類,而接口實(shí)現(xiàn)則是有沒有、具備不具備的關(guān)系。
(4).接口只給出方法的聲明,不給出方法的實(shí)現(xiàn)。抽象類中可以有抽象方法的一般方法。如果是抽象方法的話,只有方法的聲明。如果是一般方法的話,既有方法的聲明,也有方法的實(shí)現(xiàn)。

4. 使用接口的原因:

(1).沒有接口,可插入性就沒有保證。因?yàn)镴ava是單繼承的。
(2).在一個類等級結(jié)構(gòu)中的任何一個類都可以實(shí)現(xiàn)一個接口,如果這個類實(shí)現(xiàn)了這個接口那么將會影響到此類的所有子類,但是不會影響到此類的所有父類。
(3).一個類最多有一個父類,但是可以同時實(shí)現(xiàn)幾個接口。

5. 問題:

在《JAVA編程思想》一書中,將抽象類定義為“包含抽象方法的類”,但是后面發(fā)現(xiàn)如果一個類不包含抽象方法,只是用abstract修飾的話也是抽象類。也就是說抽象類不一定必須含有抽象方法。因?yàn)槿绻粋€抽象類不包含任何抽象方法,為何還要設(shè)計(jì)為抽象類?

個人理解:

抽象類目的是用來繼承的,在定義上,可以沒有抽象方法,只是用abstract修飾是沒有語法錯誤的,但是沒有哦實(shí)際意義。抽象類中的抽象方法是讓子類繼承抽象類,來實(shí)現(xiàn)抽象類中的抽象方法,根據(jù)子類的需求分別來實(shí)現(xiàn)不同的功能。

相關(guān)文章

  • Java+opencv3.2.0之scharr濾波器

    Java+opencv3.2.0之scharr濾波器

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0之scharr濾波器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 詳解Spring+Hiernate整合

    詳解Spring+Hiernate整合

    這篇文章主要介紹了詳解Spring+Hiernate整合,spring整合hibernate主要介紹以xml方式實(shí)現(xiàn),有興趣的可以了解一下。
    2017-04-04
  • spring?項(xiàng)目實(shí)現(xiàn)限流方法示例

    spring?項(xiàng)目實(shí)現(xiàn)限流方法示例

    這篇文章主要為大家介紹了spring項(xiàng)目實(shí)現(xiàn)限流的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 在日志中記錄Java異常信息的正確姿勢分享

    在日志中記錄Java異常信息的正確姿勢分享

    這篇文章主要介紹了在日志中記錄Java異常信息的正確姿勢,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java?Stream?API?使代碼更出色的操作完全攻略

    Java?Stream?API?使代碼更出色的操作完全攻略

    這篇文章主要介紹了Java?Stream?API?使代碼更出色的操作完全攻略,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • SpringCloud Gateway使用redis實(shí)現(xiàn)動態(tài)路由的方法

    SpringCloud Gateway使用redis實(shí)現(xiàn)動態(tài)路由的方法

    這篇文章主要介紹了SpringCloud Gateway使用redis實(shí)現(xiàn)動態(tài)路由的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • SpringBoot外部化配置示例解析

    SpringBoot外部化配置示例解析

    這篇文章主要介紹了SpringBoot外部化配置示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 關(guān)于解決iReport4.1.1無法正常啟動或者閃退或者JDK8不兼容的問題

    關(guān)于解決iReport4.1.1無法正常啟動或者閃退或者JDK8不兼容的問題

    在安裝使用iReport的過程中遇到一個問題,我的iReport始終不能打開,困擾了我好久。接下來通過本文給大家介紹iReport4.1.1無法正常啟動或者閃退或者JDK8不兼容的問題,需要的朋友可以參考下
    2018-09-09
  • 淺談Java動態(tài)代理的實(shí)現(xiàn)

    淺談Java動態(tài)代理的實(shí)現(xiàn)

    最近,小組同事做代碼改造時,使用到了動態(tài)代理,自己閱讀時,發(fā)現(xiàn)對代理這種設(shè)計(jì)模式都不怎么清楚,導(dǎo)致理解代碼也很困難 自己唯一能看懂的,大概就是handler中的invoke方法 ,文中作出了非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-05-05
  • 如何區(qū)分JAVA中的throws和throw

    如何區(qū)分JAVA中的throws和throw

    這篇文章主要介紹了如何區(qū)分JAVA中的throws和throw,文中講解十分詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論