抽象类、抽象方法与代码块
abstract:抽象的,可以用來修飾類、方法
1.abstract修飾類:抽象類
?1)不可被實例化
2)抽象類有構造器 (凡是類都有構造器)
3)抽象方法所在的類,一定是抽象類。
4)抽象類中可以沒有抽象方法。
>當我們設計一個類,不需要創(chuàng)建此類的實例時候,就可以考慮將其設置為抽象的,由其子類實現(xiàn)這個類的抽象方法以后,就行實例化
?2.abstract修飾方法:抽象方法
?1)格式:沒有方法體,包括{}.如:public abstract void eat();
?2)抽象方法只保留方法的功能,而具體的執(zhí)行,交給繼承抽象類的子類,由子類重寫此抽象方法。
3)若子類繼承抽象類,并重寫了所有的抽象方法,則此類是一個"實體類",即可以實例化
?4)若子類繼承抽象類,沒有重寫所有的抽象方法,意味著此類中仍有抽象方法,則此類必須聲明為抽象的!
?
?接口(interface) 是與類并行的一個概念
1.接口可以看做是一個特殊的抽象類。是常量與抽象方法的一個集合,不能包含變量、一般的方法。
?2.接口是沒有構造器的。
3.接口定義的就是一種功能。此功能可以被類所實現(xiàn)(implements)。
? ? ?比如:class CC extends DD implements AA
4.實現(xiàn)接口的類,必須要重寫其中的所有的抽象方法,方可實例化。若沒有重寫所有的抽象方法,則此類仍為一個抽象類
5.類可以實現(xiàn)多個接口。----java 中的類的繼承是單繼承的
6.接口與接口之間也是繼承的關系,而且可以實現(xiàn)多繼承
?>5,6描述的是java中的繼承的特點。
?7.接口與具體的實現(xiàn)類之間也存在多態(tài)性
代碼塊:是類的第4個成員
作用:用來初始化類的屬性
分類:只能用static來修飾。
?靜態(tài)代碼塊:
1.里面可以有輸出語句
2.隨著類的加載而加載,而且只被加載一次
3.多個靜態(tài)代碼塊之間按照順序結構執(zhí)行
4.靜態(tài)代碼塊的執(zhí)行要早于非靜態(tài)代碼塊的執(zhí)行。
5.靜態(tài)的代碼塊中只能執(zhí)行靜態(tài)的結構(類屬性,類方法)
*
非靜態(tài)代碼塊:
1.可以對類的屬性(靜態(tài)的 & 非靜態(tài)的)進行初始化操作,同時也可以調用本類聲明的方法(靜態(tài)的 & 非靜態(tài)的)
?2.里面可以有輸出語句
?3.一個類中可以有多個非靜態(tài)的代碼塊,多個代碼塊之間按照順序結構執(zhí)行
?4.每創(chuàng)建一個類的對象,非靜態(tài)代碼塊就加載一次。
?5.非靜態(tài)代碼塊的執(zhí)行要早于構造器
*
關于屬性賦值的操作:
①默認的初始化
②顯式的初始化或代碼塊初始化(此處兩個結構按照順序執(zhí)行)
③構造器中;
—————————以上是對象的屬性初始化的過程—————————————
④通過方法對對象的相應屬性進行修改
轉載于:https://www.cnblogs.com/gaofangquan/p/7219648.html
總結
以上是生活随笔為你收集整理的抽象类、抽象方法与代码块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 事件冒泡、事件委托、jQuery元素节点
- 下一篇: 通用shellcode代码