Java中抽象类和接口在概念、语法和应用上的区别和关系
2019獨角獸企業重金招聘Python工程師標準>>>
? ? 春招開始了,盆友們都忙著準備筆試、準備面試,復習學過的知識點,當然我也不例外,在這里祝每一個"有心人"心想事成,夢圓2016,加油!
? ? 進入正題,今天總結了一下Java中抽象類和接口在概念、語法和應用上的區別和關系,分享給大家,希望給大家幫助,如有錯誤或者不足之處敬請指正。
? ? 一、概念
? ? Java中抽象類和接口在概念上有本質的區別,抽象類是對類也就是對根源的抽象,而接口是對動作的抽象,接口是一種特殊形式的抽象類。比如貓和狗,他們都是動物,那么動物就可以作為抽象類,“每個貓或狗都是(is a)動物”,他們都會叫,都擁有叫這個動作,那么叫就可以作為一個接口供貓和狗去實現。
? ? 二、語法
? ? 1、含有abstract修飾符的class 即為抽象類,含有abstract的方法的類必須定義為abstract class ,abstract class 里的方法不一定是抽象的,不能有抽象的構造方法或抽象的靜態方法,因為抽象類中定義抽象方法必須放在具體子類中實現,如果子類沒有實現抽象父類中的所有方法,那么子類也必須定義為抽象類。
? ? 2、接口(interface)可以說成是抽象類的特例。接口中的所有方法都必須是抽象的,接口中的方法定義默認為public ?abstract 。接口中的變量是全局常量,即public static final修飾的。
? ? 3、接口和抽象類都不能被實例化
? ? 4、抽象類里可以有構造方法,而接口內不能有構造方法。
? ? 5、抽象類中可以有普通成員變量,而接口中不能有普通成員變量。
? ? 6、抽象類中可以包含非抽象的普通方法,而接口中所有的方法必須是抽象的,不能有非抽象的普通方法。
? ? 7、抽象類中可以包含靜態方法,接口內不能包含靜態方法。
? ? 8、抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public ?static類型,并且默認為public static類型。抽象類中的抽象方法的訪問類型可以是public ,protected和默認類型,但接口中的抽象方法只能是public類型的,并且默認即為public abstract類型。
? ? 9、一個類可以實現多個接口,但只能繼承一個抽象類。
? ? 三、應用
? ? 接口更多的是在系統框架設計方法發揮作用,主要定義模塊之間的通信,而抽象類在代碼實現方面發揮作用,可以實現代碼的重用。當你關注一個事物的本質的時候,用抽象類;當你關注一個操作的時候,用接口。抽象類的功能要遠超過接口,但是定義抽象類的代價高。因為每個類只能繼承一個類,在這個類中,你必須繼承或編寫出其所有子類的所有共性。雖然接口在功能上會弱化許多,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現多個接口,這可以降低設計階段難度。
轉載于:https://my.oschina.net/limiaoneu/blog/631391
總結
以上是生活随笔為你收集整理的Java中抽象类和接口在概念、语法和应用上的区别和关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到牙齿掉了是什么意思怎么破解
- 下一篇: Java解析Rss(三)