構造方法:構造(創建)對象時使用的方法。
- 方法名必須與類名稱完全相匹配;
- 構造方法不需要返回類型;
- 構造方法不能被static、final等關鍵字修飾,且不能有return返回語句;
- 伴隨着new被調用
- 構造方法不會被繼承,但是子類創建對象時會執行父類的構造方法,因為子類中所有構造方法的第一行有默認的隱式super()語句
1.隱式無參構造方法
默認自帶的,無參,並且方法體是空的,啥都沒有。如果重寫了任何一個,則這個空的就沒了。
2.顯式無參構造方法
重寫默認自帶的構造方法,在方法體里寫點東西
3.顯式有參構造方法
一般用於將參數值 傳給 對象里的屬性值
關於構造方法的幾種情況
1.重寫構造方法后,原本的默認無參構造方法就沒了,但是new的時候需要執行,如果重寫的構造方法時有參,則需要傳參; 如果父類只有有參構造方法,則子類構造方法也需要參數,此時需要寫super(參數);為了執行父類的構造方法。
2.父類構造方法只能在子類構造方法里被調用,用super();調用
3.調用父類普通方法,super.方法名();
final(不可變)
- final修飾的類不能被繼承,即和abstract矛盾
- final修飾的方法不能被繼承或重寫,即不能被改變,private修飾的方法也是這樣
- final修飾的變量需要定義初始值,並且不能修改。定義初始值的方式有2中,直接賦值 和 通過構造方法賦值(在new的時候初始化),都只初始化一次並且之后不可被修改。static也只初始化一次,但是static的變量可以改變
- final修飾的對象可以改變屬性值,但是不能改變該對象的引用地址
牛客刷題:
1.系統總是自動給一個類提供構造方法。錯。只有不聲明構造方法時,系統才提供默認無參構造方法。