1:代碼塊是什麼?代碼塊的分類和各自特點?
java中,用{}括起來的代碼,就是代碼塊!
局部代碼塊:用來限定變量的生命週期,出現在main方法中
構造代碼塊:類中的成員位置,{代碼塊}用來給對象的數據進行初始化,每次執行構造方法之前,要執行構造代碼塊
靜態代碼塊:類中的成員位置,也是用{代碼塊},在代碼的前面,用static代碼
作用:靜態是和類有關係的,隨着類的加載而加載,給類進行初始化
在類中:只加載一次!
2:靜態代碼塊,構造代碼塊,構造方法的執行流程?
靜態代碼塊---->構造代碼塊----->構造方法
構造代碼塊:每次在執行構造方法之前,要先走構造代碼塊
靜態代碼:在內存中只加載一次!
3:繼承概述
將多個類的共性內容,抽取到一個獨立的類中,獨立的類和着多個類就產生一種關係:extends:表示繼承
格式:
class Zi extends Fu{
}
繼承的好處:
A:提高代碼複用性
B:提高代碼維護性
C:讓類與類產生了一種關係,它是多態的前提!
讓類與類產生的這種關係,也是一種弊端!
耦合性
java中開發原則:低耦合,高內聚
耦合性:指的是多個類產生的這種關係
內聚:指的是自己完成某件事情能力
5:Java中繼承的特點
A: 在java中,只支持單繼承,不支持多繼承,
別的語言,可以支持多繼承的:class Zi extends Father,Monther{..}
B:雖然java中不支持多繼承,但是可以支持多層繼承
6:Java中繼承的注意事項?以及我們什麼時候使用繼承?
注意事項:父類所有非私有的成員(成員方法和成員變量)
其實這也體現了繼承的另一個弊端:打破了封裝性
子類不能繼承父類的構造方法,但是可以通過super(後面講)關鍵字去訪問父類構造方法。
不要爲了部分功能而去繼承
什麼時候使用:中類之間體現的是:”is a”的關係。
7:繼承中的成員訪問特點
A:成員變量
在子類方法中訪問一個變量
B:成員方法
在測試類中通過子類對象去訪問一個方法
8:繼承中構造方法的執行流程?假如父類沒有無參構造方法,子類應該怎麼辦?
若父類沒有無參構造方法,則:
子類通過super去顯示調用父類其他的帶參的構造方法
子類通過this去調用本類的其他構造方法
本類其他構造也必須首先訪問了父類構造
一定要注意:
super(…)或者this(….)必須出現在第一條語句山
否則,就會有父類數據的多次初始化