1. 程式人生 > 其它 >第八章:類變數

第八章:類變數

類變數和類方法
什麼是類變數
類變數也叫靜態變數/靜態屬性,是該類的所有物件共享的變數,任何一個該類的
物件去訪問它時,取到的都是相同的值,同樣任何一個該類的物件去修改它時,修改
的也是同一個變數。這個從前面的圖也可看出來。

注意:類變數是隨著類的載入而建立的,所以沒有建立物件例項也可以訪問;
如何定義類變數
定義語法:
訪問修飾符static資料型別變數名;[推薦]
static訪問修飾符資料型別變數名;
class A{
public static String name = "abc";


如何訪問類變數 VisitStatic.java
static public int totalNum = 100;
類名.類變數名


或者物件名.類變數名【靜態變數的訪問修飾符的訪問許可權和範圍和普通屬性是一樣的。
推薦使用:類名.類變數名:

 

 

類變數和類方法
類變數使用注意事項和細節討論 StaticDetail.java
1.什麼時候需要用類變數
當我們需要讓某個類的所有物件都共享一個變數時,就可以考慮使用類變數(靜態
變數):比如:定義學生類,統計所有學生共交多少錢。Student(name,static
fee)
2.類變數與例項變數(普通屬性)區別
類變數是該類的所有物件共享的,而例項變數是每個物件獨享的。
3.加上static稱為類變數或靜態變數,否則稱為例項變數/普通變數/非靜態變數
4.類變數可以通過類名.類變數名或者物件名.類變數名來訪問,但java設計者推薦


我們使用類名.類變數名方式訪問。【前提是滿足訪問修飾符的訪問許可權和範圍】

5.例項變數不能通過類名.類變數名方式訪問。
6.類變數是在類載入時就初始化了,也就是說,即使你沒有建立物件,只要類載入了
就可以使用類變量了。[案例演示]
7.類變數的生命週期是隨類的載入開始,隨著類消亡而銷燬。
[舉例,Monster.name][案例演示]

 

類方法基本介紹
類方法也叫靜態方法。
形式如下:
訪問修飾符static資料返回型別方法名0{}【推薦】
static 訪問修飾符資料返回型別方法名(0{}
·類方法的呼叫:
使用方式:類名.類方法名或者物件名.類方法名【前提是滿足訪問修飾符的訪問許可權和範圍

 1 package
com.StaticVar; 2 3 public class Teacher { 4 public static void main(String[] args) { 5 //類變數的訪問 6 //類名.類變數名 7 //類變數的是由類載入而建立的,所以在沒有建立例項物件也可以進行訪問 8 Student tom = new Student("tom"); 9 //呼叫靜態方法: 10 // 類名.類方法名或者物件名.類方法名【前提是滿足訪問修飾符的訪問許可權和範圍 11 tom.payFee(500); 12 // Student.payFee(500);這種呼叫也是對的 13 Student jack = new Student("jack"); 14 jack.payFee(100); 15 // Student.payFee(100);這種呼叫也是對的 16 // 總費用 17 Student.showFee(); 18 19 } 20 } 21 22 23 class Student { 24 25 private String name; 26 //類變數:在本類中所有物件可以進行共享該變數 27 //類變數的訪問,必須遵守 相關的訪問許可權 28 private static double fee = 0; 29 30 public Student(String name) { 31 this.name = name; 32 } 33 34 //靜態方法: 35 //當方法中添加了static,該方法就是靜態方法 36 //靜態方法就可以訪問靜態屬性/變數 37 public static void payFee(double fee) { 38 Student.fee += fee; //學費累積 39 } 40 41 public static void showFee(){ 42 System.out.println("學費累積:"+Student.fee); 43 } 44 }

 

類變數和類方法
類方法使用注意事項和細節討論
1)類方法和普通方法都是隨著類的載入而載入,將結構資訊儲存在方法區:
類方法中無this的引數,普通方法中隱含著this的引數
2)類方法(靜態方法)可以通過類名呼叫,也可以通過物件名呼叫。[舉例]
3)普通方法和物件有關,需要通過物件名呼叫,比如物件名.方法名(引數),不能通過類名呼叫。[舉例]

4)類方法(靜態方法)中不允許使用和物件有關的關鍵字,比如this和super。普通方法(成員方法)可以。
[舉例]
5)類方法(靜態方法)中只能訪問靜態變數或靜態方法。【如何理解】
6)普通成員方法,既可以訪問普通變數(方法),也可以訪問靜態變數(方法)。
小結:靜態方法,只能訪問靜態的成員,非靜態的方法,可以訪問靜態成員和非靜態成員
(必須遵守訪問許可權)