Java中構造方法、實例方法、類方法的區別


1. 構造方法

       構造方法負責對象的初始化工作,為實例變量賦予合適的初始值。必須滿足以下的語法規則:

 

  • 方法名與類名相同;
  • 不要返回類型(例如return、void等);
  • 不能被static、final、native、abstract和synchronized修飾,不能被子類繼承。

        例如以下例子:

 

 

[java]  view plain  copy
 
  1. <span style="font-family:'Microsoft YaHei'; font-size:10px">public class Sample{  
  2.    private in x;  
  3.    public Sample(){              //不帶參數的構造方法  
  4.       this(1);  
  5.    }  
  6.    public Sample(int x){         //帶參數的構造方法  
  7.       this.x=x;  
  8.    }  
  9.    public int Sample(int x){     //不是構造方法,return  
  10.       return x++;  
  11.    }  
  12. }</span>  

        

 

       1.1. 默認構造方法

                默認構造方法時沒有參數的構造方法,分為

                    a.隱含的默認構造方法:public ClassName(){}

                    b.程序顯示定義默認構造方法:public Employee(){this("無名氏");}

                可以調用ClassName類的默認構造方法來創建對象,沒有默認構造方法則不合法,例如:

                   

[java]  view plain  copy
 
  1. <span style="font-family:'Microsoft YaHei'; font-size:10px">ClassName c=new ClassName();   //此語句合法</span>  

 

       1.2. 重載構造方法

                通過new創建一個對象后,在不同的條件下,對象可能會有不同的初始化行為,可以通過重載構造方法來表達對象的初始化行為。具體參考this關鍵字的用法。

 

        1.3. 子類調用父類的構造方法

                父類的構造方法不能被子類調用,可以通過super語句調用父類的構造方法。例如:

 

[java]  view plain  copy
 
  1. <span style="font-family:'Microsoft YaHei'; font-size:10px">public class MyExpection extends Exceptio{  
  2.     public MyException(){  
  3.        //調用Exception父類的Exception(String msg)方法  
  4.        super("Something is error!");  
  5.     }  
  6.     public MyException(String msg){  
  7.        //調用EXception父類的Exception(String msg)方法  
  8.        super(msg);  
  9.     }  
  10. }</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修飾,不能被子類繼承。

        例如以下例子:

 

 

[java]   view plain  copy
 
  1. <span style="font-family:'Microsoft YaHei'; font-size:10px">public class Sample{  
  2.    private in x;  
  3.    public Sample(){              //不帶參數的構造方法  
  4.       this(1);  
  5.    }  
  6.    public Sample(int x){         //帶參數的構造方法  
  7.       this.x=x;  
  8.    }  
  9.    public int Sample(int x){     //不是構造方法,return  
  10.       return x++;  
  11.    }  
  12. }</span>  

        

 

       1.1. 默認構造方法

                默認構造方法時沒有參數的構造方法,分為

                    a.隱含的默認構造方法:public ClassName(){}

                    b.程序顯示定義默認構造方法:public Employee(){this("無名氏");}

                可以調用ClassName類的默認構造方法來創建對象,沒有默認構造方法則不合法,例如:

                   

[java]   view plain  copy
 
  1. <span style="font-family:'Microsoft YaHei'; font-size:10px">ClassName c=new ClassName();   //此語句合法</span>  

 

       1.2. 重載構造方法

                通過new創建一個對象后,在不同的條件下,對象可能會有不同的初始化行為,可以通過重載構造方法來表達對象的初始化行為。具體參考this關鍵字的用法。

 

        1.3. 子類調用父類的構造方法

                父類的構造方法不能被子類調用,可以通過super語句調用父類的構造方法。例如:

 

[java]   view plain  copy
 
  1. <span style="font-family:'Microsoft YaHei'; font-size:10px">public class MyExpection extends Exceptio{  
  2.     public MyException(){  
  3.        //調用Exception父類的Exception(String msg)方法  
  4.        super("Something is error!");  
  5.     }  
  6.     public MyException(String msg){  
  7.        //調用EXception父類的Exception(String msg)方法  
  8.        super(msg);  
  9.     }  
  10. }</span>  

 

                用super調用父類的構造方法必須遵守以下規則:

                        1. 子類的構造方法中不能直接通過父類的方法名調用父類的構造方法,使用super語句;

                        2. 加入在子類的構造方法中有super語句,它必須作為構造方法的第一條語句(同this語句);

        1.4. 構造方法的作用域

 

  • 當前類的其他構造方法通過this語句調用;
  • 當前類的子類的構造方法通過super語句調用;
  • 在程序中通過new語句調用。

        1.5. 構造方法的private訪問級別

 

                構造方法為private級別時,意味着只能在當前類中訪問它:當前類的其他構造方法中可以通過this語句調用,此外還可以在當前類的成員方法中使用new調用。

                以下場合中,可以把類的所有構造方法聲明為private:

 

  • 這個類中僅僅包含一些供其他程序調用的靜態方法,沒有任何實例方法。
  • 禁止這個類被繼承。聲明為private后,如果定義了它的子類,子類的方法中無法調用父類的任何構造方法。
  • 類需要把構造自身實例的細節封裝起來,不允許其他程序通過new語句創建這個類的實例。提供靜態方法。

 

 

2. 類方法

        用static關鍵字修飾,可以直接通過類名調用,不需要創建類的對象來調用該方法。

 

3. 實例方法

        可以通過類的實例調用對象的方法,也稱為成員方法。


免責聲明!

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



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