• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學(xué)習(xí)啦 > 生活課堂 > 生活小常識 > 簡述抽象類和接口的區(qū)別

    簡述抽象類和接口的區(qū)別

    時間: 岳彬1043 分享

    簡述抽象類和接口的區(qū)別

      很多常見的面試題都會出諸如抽象類和接口有什么區(qū)別,什么情況下會使用抽象類和什么情況你會使用接口這樣的問題。下面是學(xué)習(xí)啦小編為你整理的抽象類和接口的區(qū)別,供大家閱覽!

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

      抽象類

      抽象類是用來捕捉子類的通用特性的 。它不能被實例化,只能被用作子類的超類。抽象類是被用來創(chuàng)建繼承層級里子類的模板。以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

      }

      當HttpServlet類繼承GenericServlet時,它提供了service方法的實現(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

      }

      接口

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

      public interface Externalizable extends Serializable {

      void writeExternal(ObjectOutput out) throws IOException;

      void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;

      }

      當你實現(xiàn)這個接口時,你就需要實現(xiàn)上面的兩個方法:

      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);

      }

      }

      什么時候使用抽象類和接口

      如果你擁有一些方法并且想讓它們中的一些有默認實現(xiàn),那么使用抽象類吧。

      如果你想實現(xiàn)多重繼承,那么你必須使用接口。由于Java不支持多繼承,子類不能夠繼承多個類,但可以實現(xiàn)多個接口。因此你就可以使用接口來解決它。

      如果基本功能在不斷改變,那么就需要使用抽象類。如果不斷改變基本功能并且使用接口,那么就需要改變所有實現(xiàn)了該接口的類。

      Java8中的默認方法和靜態(tài)方法

      Oracle已經(jīng)開始嘗試向接口中引入默認方法和靜態(tài)方法,以此來減少抽象類和接口之間的差異。現(xiàn)在,我們可以為接口提供默認實現(xiàn)的方法了并且不用強制子類來實現(xiàn)它。這類內(nèi)容我將在下篇博客進行闡述。

      猜你喜歡:

    1.Java中抽象類與接口的區(qū)別

    2.java抽象類與接口的區(qū)別

    3.類和結(jié)構(gòu)的區(qū)別

    4.javaweb常見面試題及參考答案

    5.c#經(jīng)典筆試題

    6.java初級工程師面試題

    7.2016java面試題

    8..Net基礎(chǔ)知識點解答

    3209465 主站蜘蛛池模板: 亚洲精品视频在线观看你懂的| 国内揄拍国内精品| 啦啦啦手机完整免费高清观看| 久久精品99国产精品日本| 人人超碰人人爱超碰国产| 一本色道久久HEZYO无码| 经典三级在线播放| 正能量网站不用下载免费观看视频软件| 好吊视频一区二区三区| 国产午夜福利精品一区二区三区 | 1000部拍拍拍18勿入免费视频软件| 欧美黑人疯狂性受xxxxx喷水| 国内自产拍自a免费毛片| 亚洲精品国产综合久久久久紧| ass日本乱妇bbw| 永久不封国产毛片AV网煮站| 夜夜揉揉日日人人青青| 亚洲理论电影在线观看| 中文字幕不卡在线高清| 黄色软件视频在线观看| 日韩不卡手机视频在线观看| 国产精品美女久久久久av超清 | 国产精品亚洲天堂| 亚洲av日韩精品久久久久久久| 鸡鸡插屁股视频| 欧美日韩精品一区二区三区不卡 | 国产综合在线观看| 亚洲午夜精品一区二区公牛电影院| 中文字幕你懂的| 日韩人妻无码中文字幕视频| 国产精品婷婷久青青原| 亚洲av人无码综合在线观看| 麻豆av一区二区三区| 收集最新中文国产中文字幕| 天海翼电影在线观看| 喝乖女的奶水h1v| mm1313亚洲国产精品无码试看| 欧美黑人疯狂性受xxxxx喷水| 国产狂喷潮在线观看| 久久久国产成人精品| 精品无码av无码专区|