java中抽象類跟接口的區別


Java中抽象類和接口的區別

抽象類:

含有abstract修飾符的class 即為抽象類,

abstract類不能創建實例對象,

含有abstract的方法的類必須定義為abstract class ,

abstract class 里的方法不必是抽象的,

抽象來中定義抽象方法必須放在具體子類中實現,所以,不能有抽象的構造方法或抽象的靜態方法,如果子類沒有實現抽象父類中的所有方法,那么,子類也必須定義為抽象類。

 

接口:

     接口(interface)可以說成是抽象類的特例。接口中的所有方法都必須是抽象的,接口中的方法定義默認為public  abstract 。接口中的變量是全局常量,即public static final修飾的。

 

語法上的區別:

   1,抽象類里可以有構造方法,而接口內不能有構造方法。

   2,抽象類中可以有普通成員變量,而接口中不能有普通成員變量。

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

   4,抽象類中的抽象方法的訪問類型可以是public ,protected和默認類型,但接口中的抽象方法只能是public類型的,並且默認即為public abstract類型。

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

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

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

再補充點兩者在應用上的區別:

   接口更多的是在系統框架設計方法發揮作用,主要定義模塊之間的通信,而抽象類在代碼實現方面發揮作用,可以實現代碼的重用

 

轉自:http://azrael6619.iteye.com/blog/618882


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM