java中的抽象類和接口的理解


抽象
1.使用abstract 關鍵字
2.可以修飾方法,類

1.被abstract修飾的方法叫做抽象方法.該方法是沒有方法體的.
2.抽象方法只能在抽象類中
3.含有抽象方法的是抽象類,但是抽象類不是一定要有抽象方法.
4.抽象類中有抽象方法也可以有實例方法
5.abstract 和static 不可以一起使用.
6.抽象意味這繼承
7.抽象類不可以直接實例化


--------------------------------------------------------------------

接口:
接口是一種比抽象類更加抽象的"類"
(這里為什么會用類但是加了引用個是因為接口本身不直接是類,在底層編譯時會由JVM轉換成抽象類)
但是要明確:接口本身就不是類.

接口是用來定義類和之間的協議,它所提供的是一種形式而沒有具體實現.
(接口中在jdk8之前是沒有方法體的jdk8可以使用default關鍵字修飾方法)
同時如果有類實現了接口那么必須實現接口中沒有實現方法.實現通過關鍵字implements
interface. --外貌他的實現類代表如何工作.

接口中需要注意的問題:

1.接口中的方法默認訪問權限都是public.確切來說只能是public.因為接口是對外
2.接口中的變量默認都是public static final 的也就是都是常量.常量的變量名必須大寫.因為是static所以接口中的常量可以直接通過InterfaceName.變量
3.在8之前接口中沒有方法體.8之后如果想在接口中使用方法體必須使用default關鍵字
4.實現接口的非抽象類必須實現接口中全部只有聲明的方法
5.實現接口的如果是抽象類可以選擇不重寫任何方法直接繼續抽象下去
6.不能通過new關鍵字直接實例化接口.
7.實現多接口時比如:A.impB,C,D 那么BCD中不要存在同名方法.
8.都說Java單繼承多實現.如果是接口可以多繼承但是接口不可以實現接口哪怕有了default

接口與抽象類的區別
1.從語法層次說
1.1接口的語法是interface而抽象類的語法是abstract class
1.2抽象方法中可以接受任意訪問類型,接口中只能是public
1.3抽象類中可以有常量可以有變量,接口中只能有常量
1.4在不使用default接口中所有方法沒有方法體,抽象類中即可以有方法聲明也可以有方法體
從語法角度來說可以理解接口是特殊的抽象類.

2.從設計層次說
2.1 抽象層次不同. 抽象類是對類的抽象,接口是對行為的抽象.抽象類是對整個類進行抽象.接口是對類局部(行為)進行抽象
2.2 跨域不同.抽象類是為了繼承,抽象類的跨域是具有相似特征的,而接口是跨不同的.
接口和實現類並不要求在本質上是一樣的.僅僅只是實現了接口的契約而已.抽象了是為了繼承繼承要滿足is-a 從根本上來說父類和子類的本質是一樣的.
2.3 設計層次不同.對於抽象類來說是自下來上的設計.因為我們要知道眾多子類的行為和特征才可以抽取組成抽象類.
然而接口定義規則可以在不知道子類的情況下,先定義一個規則.所以接口是從上往下設計的.


免責聲明!

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



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