1. 程式人生 > >Java 類方法

Java 類方法

類方法: 又叫做靜態方法 

物件方法: 又叫例項方法,非靜態方法 

訪問一個物件方法,必須建立在有一個物件的前提的基礎上 
訪問類方法,不需要物件的存在,直接就訪問

步驟 1 : 類方法

類方法: 又叫做靜態方法
物件方法: 又叫例項方法,非靜態方法
訪問一個物件方法,必須建立在有一個物件的前提的基礎上
訪問類方法,不需要物件的存在,直接就訪問

package charactor;
 
public class Hero {
    public String name;
    protected float hp;
 
    //例項方法,物件方法,非靜態方法
    //必須有物件才能夠呼叫
    public void die(){
        hp = 0;
    }
     
    //類方法,靜態方法
    //通過類就可以直接呼叫
    public static void battleWin(){
        System.out.println("battle win");
    }
     
    public static void main(String[] args) {
           Hero garen =  new Hero();
           garen.name = "蓋倫";
           //必須有一個物件才能呼叫
           garen.die();
            
           Hero teemo =  new Hero();
           teemo.name = "提莫";
            
           //無需物件,直接通過類呼叫
           Hero.battleWin();
         
    }
}

步驟 2 : 呼叫類方法

和訪問類屬性一樣,呼叫類方法也有兩種方式
1. 物件.類方法

garen.battleWin();

2. 類.類方法

Hero.battleWin();

這兩種方式都可以呼叫類方法,但是建議使用第二種 類.類方法 的方式進行,這樣更符合語義上的理解。
並且在很多時候,並沒有例項,比如在前面練習的時候用到的隨機數的獲取辦法

Math.random()

random()就是一個類方法,直接通過類Math進行呼叫,並沒有一個Math的例項存在。

步驟 3 : 什麼時候設計物件方法,什麼時候設計類方法

如果在某一個方法裡,呼叫了物件屬性,比如

public String getName(){
    return name;
}

name屬性是物件屬性,只有存在一個具體物件的時候,name才有意義。 如果方法裡訪問了物件屬性,那麼這個方法,就必須設計為物件方法

如果一個方法,沒有呼叫任何物件屬性,那麼就可以考慮設計為類方法,比如

public static void printGameDuration(){
    System.out.println("已經玩了10分50秒");
}

printGameDuration 列印當前玩了多長時間了,不和某一個具體的英雄關聯起來,所有的英雄都是一樣的。 這樣的方法,更帶有功能性色彩

步驟 4 : 練習-類方法

在一個類方法中,直接呼叫一個物件方法,
比如在battleWin中呼叫die()
能否直接呼叫? 為什麼?