1. 構造方法
構造方法負責對象的初始化工作,為實例變量賦予合適的初始值。必須滿足以下的語法規則:
- 方法名與類名相同;
- 不要返回類型(例如return、void等);
- 不能被static、final、native、abstract和synchronized修飾,不能被子類繼承。
例如以下例子:
- <span style="font-family:'Microsoft YaHei'; font-size:10px">public class Sample{
- private in x;
- public Sample(){ //不帶參數的構造方法
- this(1);
- }
- public Sample(int x){ //帶參數的構造方法
- this.x=x;
- }
- public int Sample(int x){ //不是構造方法,return
- return x++;
- }
- }</span>
1.1. 默認構造方法
默認構造方法時沒有參數的構造方法,分為
a.隱含的默認構造方法:public ClassName(){}
b.程序顯示定義默認構造方法:public Employee(){this("無名氏");}
可以調用ClassName類的默認構造方法來創建對象,沒有默認構造方法則不合法,例如:
- <span style="font-family:'Microsoft YaHei'; font-size:10px">ClassName c=new ClassName(); //此語句合法</span>
1.2. 重載構造方法
通過new創建一個對象后,在不同的條件下,對象可能會有不同的初始化行為,可以通過重載構造方法來表達對象的初始化行為。具體參考this關鍵字的用法。
1.3. 子類調用父類的構造方法
父類的構造方法不能被子類調用,可以通過super語句調用父類的構造方法。例如:
- <span style="font-family:'Microsoft YaHei'; font-size:10px">public class MyExpection extends Exceptio{
- public MyException(){
- //調用Exception父類的Exception(String msg)方法
- super("Something is error!");
- }
- public MyException(String msg){
- //調用EXception父類的Exception(String msg)方法
- super(msg);
- }
- }</span>
用super調用父類的構造方法必須遵守以下規則:
1. 子類的構造方法中不能直接通過父類的方法名調用父類的構造方法,使用super語句;
2. 加入在子類的構造方法中有super語句,它必須作為構造方法的第一條語句(同this語句);
1.4. 構造方法的作用域
- 當前類的其他構造方法通過this語句調用;
- 當前類的子類的構造方法通過super語句調用;
- 在程序中通過new語句調用。
1.5. 構造方法的private訪問級別
構造方法為private級別時,意味着只能在當前類中訪問它:當前類的其他構造方法中可以通過this語句調用,此外還可以在當前類的成員方法中使用new調用。
以下場合中,可以把類的所有構造方法聲明為private:
- 這個類中僅僅包含一些供其他程序調用的靜態方法,沒有任何實例方法。
- 禁止這個類被繼承。聲明為private后,如果定義了它的子類,子類的方法中無法調用父類的任何構造方法。
- 類需要把構造自身實例的細節封裝起來,不允許其他程序通過new語句創建這個類的實例。提供靜態方法。
2. 類方法
用static關鍵字修飾,可以直接通過類名調用,不需要創建類的對象來調用該方法。
3. 實例方法
可以通過類的實例調用對象的方法,也稱為成員方法。
1. 構造方法
構造方法負責對象的初始化工作,為實例變量賦予合適的初始值。必須滿足以下的語法規則:
- 方法名與類名相同;
- 不要返回類型(例如return、void等);
- 不能被static、final、native、abstract和synchronized修飾,不能被子類繼承。
例如以下例子:
1.1. 默認構造方法
默認構造方法時沒有參數的構造方法,分為
a.隱含的默認構造方法:public ClassName(){}
b.程序顯示定義默認構造方法:public Employee(){this("無名氏");}
可以調用ClassName類的默認構造方法來創建對象,沒有默認構造方法則不合法,例如:
1.2. 重載構造方法
通過new創建一個對象后,在不同的條件下,對象可能會有不同的初始化行為,可以通過重載構造方法來表達對象的初始化行為。具體參考this關鍵字的用法。
1.3. 子類調用父類的構造方法
父類的構造方法不能被子類調用,可以通過super語句調用父類的構造方法。例如:
用super調用父類的構造方法必須遵守以下規則:
1. 子類的構造方法中不能直接通過父類的方法名調用父類的構造方法,使用super語句;
2. 加入在子類的構造方法中有super語句,它必須作為構造方法的第一條語句(同this語句);
1.4. 構造方法的作用域
- 當前類的其他構造方法通過this語句調用;
- 當前類的子類的構造方法通過super語句調用;
- 在程序中通過new語句調用。
1.5. 構造方法的private訪問級別
構造方法為private級別時,意味着只能在當前類中訪問它:當前類的其他構造方法中可以通過this語句調用,此外還可以在當前類的成員方法中使用new調用。
以下場合中,可以把類的所有構造方法聲明為private:
- 這個類中僅僅包含一些供其他程序調用的靜態方法,沒有任何實例方法。
- 禁止這個類被繼承。聲明為private后,如果定義了它的子類,子類的方法中無法調用父類的任何構造方法。
- 類需要把構造自身實例的細節封裝起來,不允許其他程序通過new語句創建這個類的實例。提供靜態方法。
2. 類方法
用static關鍵字修飾,可以直接通過類名調用,不需要創建類的對象來調用該方法。
3. 實例方法
可以通過類的實例調用對象的方法,也稱為成員方法。