天天看點

執行個體方法和類方法的差別

執行個體方法也叫做對象方法。
類方法是屬于整個類的,而執行個體方法是屬于類的某個對象的。
      由于類方法是屬于整個類的,并不屬于類的哪個對象,是以類方法的方法體中不能有與類的對象有關的内容。即類方法體有如下限制: 
(1) 類方法中不能引用對象變量;
(2) 類方法中不能調用類的對象方法;
(3) 在類方法中不能使用super、this關鍵字。
(4)類方法不能被覆寫。 
                 如果違反這些限制,就會導緻程式編譯錯誤。
與類方法相比,對象方法幾乎沒有什麼限制:
(1) 對象方法中可以引用對象變量,也可以引用類變量;
(2) 對象方法中可以調用類方法;
(3) 對象方法中可以使用super、this關鍵字。
      在程式設計中,一些通用的、公用型的方法與類的對象無關,是以常常被作為類方法實作。如Java類庫中Math類,其中多數的數學運算操作都被定義成靜态方法。是以,可以使用類方法把一些通用的、公用型的方法放在合适的類中,進而很好地将它們組織起來。應用程式中的主方法main就是類方法。
例如:
class Clerk {

    int c_ClerkNo;//職員号
    String c_ClerkName;//職員姓名
    double c_ClerkSalary;//工資
    static int c_NextClerkNo=1000;//下一個職員号
    
    static double c_LowSalary=280;//例4-11
    
    public Clerk(String name,double salary) {
     c_ClerkNo=++c_NextClerkNo;
    // c_ClerkNo=c_NextClerkNo++;
     
     c_ClerkName=new String(name);
    // c_ClerkName=name;
     
     c_ClerkSalary=salary;
    }    
}

public class InstanceClerk
{
 public static void main(String[] args)
 {
  Clerk objclerk1=new Clerk("張三",892.5);
  Clerk objclerk2=new Clerk("李四",1025.8);
  
  String aName=new String("王五");
  Clerk objclerk3=new Clerk(aName,2000);
  
  System.out.println("姓名:"+objclerk1.c_ClerkName+"編号:"+objclerk1.c_ClerkNo+"工資:"+objclerk1.c_ClerkSalary);
  System.out.println("姓名:"+objclerk2.c_ClerkName+"編号:"+objclerk2.c_ClerkNo+"工資:"+objclerk2.c_ClerkSalary);
  System.out.println("姓名:"+objclerk3.c_ClerkName+"編号:"+objclerk3.c_ClerkNo+"工資:"+objclerk3.c_ClerkSalary);
  
  System.out.println("最低工資:職員1="+objclerk1.c_LowSalary);
  System.out.println("最低工資:職員2="+objclerk2.c_LowSalary);
 
  Clerk.c_LowSalary=330;
 
  System.out.println("提高以後");
  System.out.println("最低工資:職員1="+objclerk1.c_LowSalary);
  System.out.println("最低工資:職員2="+objclerk2.c_LowSalary);
 }
}
你可以參考這個源程式,然後自己将注釋的語句去掉注釋等等,運作一下就會明白的。
希望對你有所幫助。      

繼續閱讀