溫馨提示×

溫馨提示×

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

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

java中abstract class和interface有什么區(qū)別

發(fā)布時間:2021-09-17 12:40:44 來源:億速云 閱讀:140 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“java中abstract class和interface有什么區(qū)別”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

  下面比較一下兩者的語法區(qū)別:

  1.抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。

  2.抽象類中可以有普通成員變量,接口中沒有普通成員變量

  3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

  4. 抽象類中的抽象方法的訪問類型可以是 publicprotected 和(默認(rèn)類型,雖然eclipse 下不報(bào)錯,但應(yīng)該也不行),但接口中的抽象方法只能是public 類型的,并且默認(rèn)即為 public abstract 類型。

  5. 抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法

  6. 抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是 public static final 類型,并且默認(rèn)即為 public static final 類型。

  7. 一個類可以實(shí)現(xiàn)多個接口,但只能繼承一個抽象類。

  下面接著再說說兩者在應(yīng)用上的區(qū)別:

  接口更多的是在系統(tǒng)架構(gòu)設(shè)計(jì)方法發(fā)揮作用,主要用于定義模塊之間的通信契約。而抽象類在代碼實(shí)現(xiàn)方面發(fā)揮作用,可以實(shí)現(xiàn)代碼的重用,例如,模板方法設(shè)計(jì)模式是抽象類的一個典型應(yīng)用,假設(shè)某個項(xiàng)目的所有 Servlet 類都要用相同的方式進(jìn)行權(quán)限判斷、記錄訪問日志和處理異常,那么就可以定義一個抽象的基類,讓所有的Servlet 都繼承這個抽象基類,在抽象基類的 service 方法中完成權(quán)限判斷、記錄訪問日志和處理異常的代碼,在各個子類中只是完成各自的業(yè)務(wù)邏輯代碼,偽代碼如下:

  public abstract class BaseServlet extends HttpServlet

  {

  public final void service(HttpServletRequest request,

  HttpServletResponse response) throws

  IOExcetion,ServletException

  {

  記錄訪問日志

  進(jìn)行權(quán)限判斷

  if(具有權(quán)限)

  {

  try

  {

  doService(request,response);

  }

  catch(Excetpion e)

  {

  記錄異常信息

  }

  }

  }

  protected abstract void doService(HttpServletRequest

  request, HttpServletResponse response) throws

  IOExcetion,ServletException;

  //注意訪問權(quán)限定義成 protected,顯得既專業(yè),又嚴(yán)謹(jǐn),因?yàn)樗菍iT給子類用的

  }

  public class MyServlet1 extends BaseServlet

  {

  protected void doService(HttpServletRequest request,

  HttpServletResponse response) throws

  IOExcetion,ServletException

  {

  本 Servlet 只處理的具體業(yè)務(wù)邏輯代碼

  }

  }

  父類方法中間的某段代碼不確定,留給子類干,就用模板方法設(shè)計(jì)模式。

“java中abstract class和interface有什么區(qū)別”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向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