靜態方法和實例方法的差異主要體現在兩個面向:
在外部呼叫靜態方法時,可以使用"類別名稱.方法名稱"的方式,也可以使用"物件名稱.方法名稱"的方式。而實例方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。
靜態方法在存取本類別的成員時,只允許存取靜態成員(即靜態成員變數和靜態方法),而不允許存取實例成員變數和實例方法;實例方法則無此限制。
下面幾個例子展示了這一區別。
1、呼叫靜態方法範例
//-----------hasStaticMethod.java----------------- public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
下面這個程式使用兩種形式來呼叫靜態方法。
//-----------invokeStaticMethod.java----------------- public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
程式兩次呼叫靜態方法,都是允許的,程式的輸出如下:
This is a static method.This is a static method.
允許不建立物件而調用靜態方法,是為了Java
允許不建立物件而調用靜態方法,是因為Java減少程式設計師在呼叫某些常用方法時的麻煩,而允許程式設計師按照傳統的C語言中使用函數的方式來使用方法。典型的例子是前面某些程式中使用"Math.ramdon()"來取得隨機數。
2、靜態方法存取成員變數範例
//-----------accessMember.java----------------- class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持PHP中文網。
🎜更多Java靜態方法和實例方法區別詳解相關文章請關注PHP中文網! 🎜