1. 程式人生 > >Java靜態成員與實例成員

Java靜態成員與實例成員

code rst 通過 對象 color ron println 1.5 實例

Java靜態成員與實例成員

  類是一種類型,類中定義的所有成員都歸此的對象所有,這些成員成為實例成員;而某些成員想要被所有類的所有對象共享,此時的成員不屬於某個對象,而是屬於整個類,這些成員成為靜態成員。

  實例成員:需要通過對象進行訪問和調用

  靜態成員(static修飾符修飾):不需要對象可以直接調用

  例如:

 1 package java學習;
 2 
 3 public class test2 {
 4     double a;     //a為實例成員
 5     static double c; //c為類成員(即靜態成員)
 6     public
static void main(String[] args) { 7 // TODO Auto-generated method stub 8 test2 first = new test2(); 9 //實例化一個對象 10 first.a = 0.5; 11 first.c = 1.0; 12 //通過對象調用 13 c = 1.5; 14 //直接調用 15 System.out.println(first.a); 16 System.out.println(first.c);
17 System.out.println(c); 18 } 19 20 }

  輸出結果:

  靜態成員c首先通過對象訪問賦值為1.0,但是其後又直接調用c賦值1.5,故test.c也為1.5,靜態變量分配空間唯一,某個對象的靜態變量值改變,所有對象的值都將發聲變化。

技術分享圖片

靜態方法(函數)

靜態方法不在某個特定的對象上進行操作,故引用this會發生錯誤;

調用靜態方法和靜態變量一樣不需要通過對象調用;

  靜態方法中只能訪問靜態成員,不可以訪問實例成員。
 1 package java學習;
 2 
 3 public class test2 {
4 double a , s; //a為實例成員 5 static double c; //c為類成員(即靜態成員) 6 static void sum1(double a) { 7 double s = a * a; //靜態方法中只能訪問靜態成員,不可以訪問實例成員 8 System.out.println(s); 9 } 10 void sum2(double a) { 11 this.a = a; 12 c = a; //實例方法中訪問靜態成員 13 System.out.println(s); 14 } 15 public static void main(String[] args) { 16 // TODO Auto-generated method stub 17 test2 first = new test2(); 18 //實例化一個對象 19 first.sum1(0.5); 20 sum1(0.6); 21 //直接調用函數 22 first.sum2(0.8); 23 } 24 25 }

  運行結果:

技術分享圖片

關於this

  this指向的是對象,如果方法中的參數名字和類中的變量名字一樣,可以使用this通過參數的傳遞同時改變類中的成員值。如果不需要改變類中的成員值,可以不用this;如果二者不同名也不需要this。

Java靜態成員與實例成員