1. 程式人生 > 其它 >阿拉德之怒手遊超詳細圖文架設教程

阿拉德之怒手遊超詳細圖文架設教程

成員方法

基本介紹

  • 在某些情況下,我們要需要定義成員方法(簡稱方法), 比如人類除了有一些屬性外(年齡,

    姓名 ),我們人類還有一些行為比如:可以說話、跑步,通過學習,還可以做算術題。這時就

    要用成員方法才能完成。現在要求對Person類完善。

成員方法快速入門

Method01.java

  1. 新增speak成損方法,輸出我是一隻好人

  2. 新增cal01成員方法,可以計算從1+.+1000的結果

  3. 新增ca02成員方法,該方法可以接收一個數n,計算從1+.+n的結果

  4. 新增getSuml成員方法,可以計算兩個數的和

public class Method01 {
  //編寫一個main方法
  public static void main(String[] args) {
      //方法的使用
      //6.方法寫好之後如果不去呼叫的話,不會生效方法裡的內容
      //7.先建立物件,然後再去呼叫其方法即可
      Person02 p1 = new Person02();
      p1.speak();
      //建立物件之後,就會找Person類中的speak方法,找到之後就去使用
      p1.cal01();
      p1.cal02(5);
      //呼叫cal02方法同時給n一個5的賦值



      int returnRes = p1.getSum(50,20);
      //呼叫getSum方法, 同時給num1 num2賦值
      //方法返回的值賦值給returnRes
      System.out.println("getSum方法返回的值="+returnRes);
  }
}

class Person02{
  String name;
  int age;
  //方法(成員方法)
  //新增speak成員方法, 輸出"我是一個好人"
  //1.public表示方法公開
  //2.void表示方法無返回值
  //3.speak()方法名稱 ()形參列表目前為空
  //4.{}內部叫做方法體, 可以寫我們要執行的程式碼,或者相關的功能
  public void speak(){
      System.out.println("我是一個好人");
      //5.表示我們的方法就是輸出一段字串
  }

  //新增cal01成員方法 可以計算從 1+...1000的計算結果
  public void cal01(){
      int res = 0;
      for (int i=0;i<=1000;i++){
          res += i;
      }
      System.out.println("計算結果:"+res);
      //輸出迴圈的結果
  }
  //新增cal02方法,該方法可以接收一個數n,計算從1+n的結果
  //1.這裡的(int n)為形參列表,表示當前有一個形參n,可以接收到使用者的輸入
  public void cal02(int n){
      int res = 0;
      for (int i=0;i<=n;i++){
          //這裡的唯一變化就是,可以按照輸入的次數完成迴圈
          res += i;
      }
      System.out.println("cal02的計算結果:"+res);
      //輸出迴圈的結果
  }
  //新增getSum成員方法,可以計算兩個數的和
  //1.public表示方法是公開的
  //2.int 表示方法執行之後 ,返回一個int值
  //3.getSum 方法名
  //4.(int num1,int num2)形參列表 ,2個形參 ,可以接收使用者傳入的兩個數
  //5.return res return表示將res的值, 返回
  public int getSum(int num1,int num2){
      int res = num1 + num2;
      return res;

  }
}

方法呼叫小結 :

  1. 當程式執行到方法時,就會開闢一個獨立 的空間(棧空間)

  2. 當方法執行完畢,或者執行到return語句 時,就會返回

  3. 返回到呼叫方法的地方

  4. 返回之後繼續執行方法後面的程式碼

  5. 當main方法(棧)執行完畢之後 ,整個程式退出

成員方法的必要性

·為什麼需要成員方法 ?

  • √看一個需求:

    請遍歷一個數組,輸出陣列的各個元素值。

int [][]map = {(0,1,1),(1,1,1),(1,1,3)};

public class Method02 {
  public static void main(String[] args) {
      //請遍歷一個數組,輸出陣列的各個元素值。
      int [][] map = {{0,0,1},{1,1,1},{1,1,3}};
      //遍歷map
      //傳統的解決方法就是直接遍歷
      for (int i =0; i < map.length; i++){
          for (int j= 0;j < map[i].length;j++){
              System.out.print(map[i][j]+" ");
          }
          System.out.println();
          //每次遍歷陣列之後換行
      }
  }
}

可以發現使用這樣的方式確實可以實現對於程式碼的遍歷

但是如果要求是讓你多遍歷幾次 的話就要寫很多次程式碼

public class Method02 {
  public static void main(String[] args) {
      //請遍歷一個數組,輸出陣列的各個元素值。
      int [][] map = {{0,0,1},{1,1,1},{1,1,3}};

      //使用方法完成輸出
      Mytools tool = new Mytools();

      tool.printArr(map);
      //這裡就將陣列傳入到形參
      tool.printArr(map);
      tool.printArr(map);
      //實現三次
      }
  }


//把輸出的功能 ,寫到一個類的方法中 ,然後呼叫這個方法即可
class Mytools {
  //方法,接收一個二維陣列
  public void printArr(int[][] map) {
      System.out.println("==============");
      //對傳入的map陣列進行遍歷輸出
      for (int i = 0; i < map.length; i++) {
          for (int j = 0; j < map[i].length; j++) {
              System.out.print(map[i][j] + " ");
          }
          System.out.println();
      }
  }
}

使用這樣的辦法 ,就可以是實現對遍歷多次 ,而不是寫多次程式碼

 

成員方法的好處

  • 提高程式碼的複用性

  • 可以將實現的細節封裝起來,然後供其他使用者來呼叫即可。

成員方法的定義

public 返回資料型別 方法名(引數列表..){
//方法體語句;
return返回值;
}
//這裡的public就是一種訪問修飾符

 

  1. 形參列表:表示成員方法輸入cal(intn) ,getSum(int num1 ,int num2)

  2. 資料型別(返回型別):表示成員方法輸出,void表示沒有返回值

  3. 方法主體:表示為了實現某一功能程式碼塊

  4. return語句不是必須的。(例如void)

·注意事項和使用細節

MethodDetail.java

訪問修飾符(作用是控制方法使用的範圍)

如果不寫訪問修飾符就是預設訪問 ,[四種 : public , protected ,預設(也就是不寫) ,private]

---返回資料型別

  1. 一個方法最多隻能有一個返回值 [思考,如何返回多個結果? 可以使用陣列的方式返回]

  2. 返回型別可以為任意型別,包含基本型別或引用型別(陣列,物件)

  3. 如果方法要求有返回資料型別,則方法體中最後的執行語句必須為return值;而 且要求返回值型別必須和return的值型別一致或相容

  4. 如果方法是void,則方法體中可以沒有return語句,或者只寫return:

  5. 遵循駝峰命名法,最好見名知義,表達出該功能的意思即可,比如得到兩個數的和 getSum ,開發中按照規範命名

 

形參列表

  1. 一個方法可以有0個引數,也可以有多個引數,中間用逗號開,比如 getSum (int n1, int n2)

  2. 引數型別可以為任意型別,包含基本型別或引用型別,比如printArr(int[][]map)

  3. 呼叫帶引數的方法時,一定對應著引數列表傳入相同型別或相容型別的引數!【getSum】

    例如 需要傳入的型別為int 我們可以傳入byte ,byte型別會自動轉換為int型別 ,這就是相容型別

    但是相容支支援向上相容 ,不支援向下相容 ,例如傳入double的高精度引數

  4. 方法定義時的引數稱為形式引數,簡稱形參;方法呼叫時的引數稱為實際引數,簡稱實參,實 參和形參的型別要一致或相容、個數、順序必須一致![演示]

 

  1. 方法體裡面寫完成功能的具體的語句,可以為輸入、輸出、變數、運算、分支、迴圈、方法呼叫,但裡 面不能再定義方法!即:方法不能巢狀定義。

public void f4(){
  pubilc void f5(){    
  }
}
//此時就會報錯,非法的表示式的開始!

√方法呼叫細節說明

  1. 同一個類中的方法呼叫:直接呼叫即可。比如print(引數): 案演示:A類sayok呼叫print()

  2. 跨類中的方法A類呼叫B類方法:需要通過物件名呼叫。比如物件名方法名(參 數):案例演示:B類sayHello呼叫print()

  3. 特別說明一下:跨類的方法呼叫和方法的訪問修飾符相關,先暫時這麼提一下, 後面我們講到訪問修飾符時,再瞭解。