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

Java抽象類與接口區(qū)別詳解

 更新時(shí)間:2020年03月18日 12:49:04   作者:Dream0000  
這篇文章主要介紹了Java抽象類與接口區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

很多常見(jiàn)的面試題都會(huì)出諸如抽象類和接口有什么區(qū)別,什么情況下會(huì)使用抽象類和什么情況你會(huì)使用接口這樣的問(wèn)題。本文我們將仔細(xì)討論這些話題。

在討論它們之間的不同點(diǎn)之前,我們先看看抽象類、接口各自的特性。

抽象類

抽象類是用來(lái)捕捉子類的通用特性的 。它不能被實(shí)例化,只能被用作子類的超類。抽象類是被用來(lái)創(chuàng)建繼承層級(jí)里子類的模板。以JDK中的GenericServlet為例:

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
  // abstract method
  abstract void service(ServletRequest req, ServletResponse res);
 
  void init() {
    // Its implementation
  }
  // other method related to Servlet
}

當(dāng)HttpServlet類繼承GenericServlet時(shí),它提供了service方法的實(shí)現(xiàn):

public class HttpServlet extends GenericServlet {
  void service(ServletRequest req, ServletResponse res) {
    // implementation
  }
 
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
    // Implementation
  }
 
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
    // Implementation
  }
 
  // some other methods related to HttpServlet
}

接口

接口是抽象方法的集合。如果一個(gè)類實(shí)現(xiàn)了某個(gè)接口,那么它就繼承了這個(gè)接口的抽象方法。這就像契約模式,如果實(shí)現(xiàn)了這個(gè)接口,那么就必須確保使用這些方法。接口只是一種形式,接口自身不能做任何事情。以Externalizable接口為例:

public interface Externalizable extends Serializable {
  void writeExternal(ObjectOutput out) throws IOException;
 
  void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
}

當(dāng)你實(shí)現(xiàn)這個(gè)接口時(shí),你就需要實(shí)現(xiàn)上面的兩個(gè)方法:

public class Employee implements Externalizable {
 
  int employeeId;
  String employeeName;
 
  @Override
  public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
    employeeId = in.readInt();
    employeeName = (String) in.readObject();
 
  }
  @Override
  public void writeExternal(ObjectOutput out) throws IOException {
 
    out.writeInt(employeeId);
    out.writeObject(employeeName);
  }
}

抽象類和接口的對(duì)比

什么時(shí)候使用抽象類和接口

  • 如果你擁有一些方法并且想讓它們中的一些有默認(rèn)實(shí)現(xiàn),那么使用抽象類吧。
  • 如果你想實(shí)現(xiàn)多重繼承,那么你必須使用接口。由于Java不支持多繼承,子類不能夠繼承多個(gè)類,但可以實(shí)現(xiàn)多個(gè)接口。因此你就可以使用接口來(lái)解決它。
  • 如果基本功能在不斷改變,那么就需要使用抽象類。如果不斷改變基本功能并且使用接口,那么就需要改變所有實(shí)現(xiàn)了該接口的類。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java圖片處理開(kāi)源框架Thumbnailator

    Java圖片處理開(kāi)源框架Thumbnailator

    這篇文章主要為大家詳細(xì)介紹了Java圖片處理開(kāi)源框架Thumbnailator的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java基礎(chǔ)之多線程

    Java基礎(chǔ)之多線程

    以下是我們Java基礎(chǔ)多線程的一些知識(shí)點(diǎn)總結(jié),看完以后會(huì)覺(jué)得多線程也可以這么簡(jiǎn)單,小編精心推薦,希望能對(duì)大家有所幫助
    2018-09-09
  • 解析ConcurrentHashMap: 預(yù)熱(內(nèi)部一些小方法分析)

    解析ConcurrentHashMap: 預(yù)熱(內(nèi)部一些小方法分析)

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見(jiàn)問(wèn)題---ConcurrentHashMap知識(shí),一起看看吧
    2021-06-06
  • 詳解Java生成PDF文檔方法

    詳解Java生成PDF文檔方法

    這篇文章主要介紹了Java生成PDF文檔方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 使用Java找出兩個(gè)List中的重復(fù)元素三種方法

    使用Java找出兩個(gè)List中的重復(fù)元素三種方法

    在Java編程中,我們經(jīng)常需要找出兩個(gè)列表(List)中的重復(fù)元素,在本文中,我們將探討三種方法來(lái)實(shí)現(xiàn)這一目標(biāo),需要的朋友可以參考下
    2023-10-10
  • Java Condition類案例詳解

    Java Condition類案例詳解

    這篇文章主要介紹了Java Condition類案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • javax.persistence中@Column定義字段類型方式

    javax.persistence中@Column定義字段類型方式

    這篇文章主要介紹了javax.persistence中@Column定義字段類型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • @Bean注解和@Configuration、@Component注解組合使用的區(qū)別

    @Bean注解和@Configuration、@Component注解組合使用的區(qū)別

    這篇文章主要介紹了@Bean注解和@Configuration、@Component注解組合使用的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java?NIO實(shí)戰(zhàn)之多人聊天室

    Java?NIO實(shí)戰(zhàn)之多人聊天室

    這篇文章主要為大家詳細(xì)介紹了Java?NIO實(shí)戰(zhàn)之多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java中ConcurrentHashMap和Hashtable的區(qū)別

    Java中ConcurrentHashMap和Hashtable的區(qū)別

    ConcurrentHashMap?和?Hashtable?都是用于在Java中實(shí)現(xiàn)線程安全的哈希表數(shù)據(jù)結(jié)構(gòu)的類,但它們有很多區(qū)別,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2023-10-10

最新評(píng)論