溫馨提示×

溫馨提示×

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

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

Java開發中abstract class和interface有什么區別

發布時間:2021-09-03 14:19:11 來源:億速云 閱讀:153 作者:chen 欄目:編程語言

本篇內容主要講解“Java開發中abstract class和interface有什么區別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java開發中abstract class和interface有什么區別”吧!

  Java開發中abstract class 和 interface 有什么區別?

        含有 abstract 修飾符的 class 即為抽象類,abstract 類不能創建的實例對象。含有 abstract 方法的類必須定義為 abstract class,abstract class 類中的方法不必是抽象的。abstract class 類中定義抽象方法必須在具體(Concrete)子類中實現,所以,不能有抽象構造方法或抽象態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那么子類也必須定義為 abstract 類型。


  接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認為 public abstract類型,接口中的成員變量類型默認為 public static final。下面比較一下兩者的語法區別:


  1.抽象類可以有構造方法,接口中不能有構造方法。


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


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


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


  5. 抽象類中可以包含靜態方法,接口中不能包含靜態方法


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


  7. 一個類可以實現多個接口,但只能繼承一個抽象類。


  下面接著再說說兩者在應用上的區別:


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

Java開發中abstract class和interface有什么區別

Java開發中abstract class和interface有什么區別
  父類方法中間的某段代碼不確定,留給子類干,就用模 板方法設計模式。

到此,相信大家對“Java開發中abstract class和interface有什么區別”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女