應用二:static + 成員方法 vs 成員方法
概念:
靜態方法:用static修飾的成員方法,通常也稱爲靜態方法、類方法、全局方法等。
非靜態方法:沒有被static修飾的成員方法,也稱爲叫做非靜態方法、實例方法,對象方法等。
特徵:
與靜態成員相似,靜態方法屬於整個類的,由類所進行維護,優先於對象而存在,因此可以通過類名和對象名兩種方式訪問,也因此在靜態方法中無法直接訪問同類中的非靜態成員。
示例:
定義國產車類CarDemo,分別包含靜態屬性firm,對象屬性color、price ,靜態方法display。
定義測試類CarTest,針對CarDemo進行測試
備註:此處由於展示篇幅有限,暫不考慮屬性的訪問權限
- 當display方法中分別訪問類內靜態及非靜態成員時:
錯誤提示:不能在靜態方法中應出現this關鍵字
- 當修改方法內部,去掉this
- 修訂display方法體,成功訪問類內靜態及非靜態方法
總結:
1、靜態方法中可以通過“類名.成員”或“成員”的方式訪問類內靜態成員/靜態方法
2、不允許直接訪問本類中的非靜態成員/非靜態方法
3、可以通過實例化產生本類對象,通過“對象.成員”的方式訪問類內非靜態成員/非靜態方法。
此時輸出結果爲:
總結:
1、類外可應用“類名.成員方法”或“對象名.成員方法”的方式訪問非私有靜態方法
2、應用“對象名.成員方法”時會出現警告,但不影響程序運行。
- 類中添加非靜態方法run,並在其中訪問類內靜態成員
總結:
1、非靜態方法可以通過“類名.成員法”或“成員”或“this.成員”的方式訪問類內靜態成員/靜態方法
2、應用“this.靜態成員/靜態方法”時會出現警告,但不影響程序運行。
- 分別在run和display方法中添加靜態局部變量test
錯誤提示:test前的static修飾符無效,即不允許在方法內定義靜態變量。
當去掉局部變量前面的static,正常顯示
總結:
不允許在方法內部定義靜態局部變量。