2015年1月17日 星期六

Method


Method 


○ 為一段獨立完整的程式碼

優點
    ● 避免撰寫重複的程式碼
    ● 將程式碼分為n個方法,可以選擇簡單的程式碼先寫在去run,較利於除錯
    ● 需要時在呼叫即可 (分為 靜態 & 動態)
    ● 易於維護和修改
          當所有敘述皆寫於main中,造成大量程式碼集中在內,難以維護        
     
傳回值型別 (傳回值最多1個 or 0個)
   
   ○ 有傳回值
       ● 傳回值型別必須與方法定義的型別相同
       ● 傳回值可以是:常數、變數or 運算式
       ● 需有return敘述

   ○ 無傳回值
       ● 因為無傳回值,所以一般不寫return 
       ● 如果有寫return直接加分號;
       ● 通常配合" if " 使用

=============================================================================================

◎ 區域變數 位於 "方法"和"建構子" 之中,區域變數存在於方法之中,所以一旦方法執行完就會將區域變數
    歸還給記憶體空間,故方法內區域變數不能加 static 。

◎ 寫在建構子內的方法通常不具備傳回值的作用,就好比是 void 寫法
   所以在建構子和void 寫法中加上return; 基本上是用來中斷後續程式碼執行。

=============================================================================================

※ 以小狗為例
   小狗的屬性:名字name、種類type、年齡age

=============================================================================================
  +++ 靜態 & 動態 Method+++  

class statement{

    static String name (){                          // 靜態的方法
      return "Ponbi";
    }

    String type(){                                      // 動態的方法
        return "Mix";
    }
}

public class staticMovement {
    
    public static void main (String [] args){
        
        System.out.println(statement.name());          // 靜態的方法,一建立時就存在,所以可以直接呼叫
        
             statement one = new statement();                // 動態的方法需要先new一個物件出來
             System.out.println(one.type());
        
    }

}

=============================================================================================
○ 有傳回值   
+++Method+++       (算數)


public class Count {

    static int sum(int x, int y){                 // 收到兩個參數值
        int z = x + y;                                  // 定義一個變數來接算樹結果 
        return z;                                         // 並將值回傳到main底下
    }
    
    public static void main (String [] args){
        int redapple =5;
        int greenapple =7;
        int count =0;
      
            count = sum(redapple,greenapple);           
                                                                  // 加總數量並傳兩個參數,找到上面的方法(sum)去做計算

        System.out.println("總共有 "+ count + " 顆蘋果");
    } 
}

=============================================================================================

○ 無傳回值   
+++簡易版Method+++

public class Puppy {
    public static void Name(){                                                          //建構子內可以放static+方法
       System.out.println("Ponpon");
     }
    public static void main(String [] args){
        System.out.print("My puppy name is ");
        Name();                                                                               // 呼叫方法Name()
     }
    
}

=============================================================================================

○ 無傳回值
+++合體版Method+++

public class Puppy {
    public static void Name(){                                                          //建構子內可以放static+方法
       System.out.println("PonBi");
     }

    public static String Name="Ponpon";
    public static String Type="Mix";
    public static int Age = 5;
    
    public static void main(String [] args){

        System.out.print("My puppy name is ");

                Name();                                                             // 可以直接呼叫                                                  
                Puppy.Name();                                                   // 也可以使用 取得類別方法                         
        
                     String dogName = Puppy.Name;                      //取得類別屬性 = 類別名稱 . 類別屬性
                     String dogType = Puppy.Type;
                     int dogAge = Puppy.Age;
        
        System.out.print("I have a "+ Type + " dog, her name is " +Name+ ". she is "+Age+ " years old." );
    
    }
}

=============================================================================================

○ 無傳回值
+++抽離版Method+++   (將method 與 main 分開,method不變)

                                          // 將method 與 main 分開時要先import,import 後面加上要到何處尋找你要的套件

import static blog.Puppy.Age;                                            
import static blog.Puppy.Name;                                           
import static blog.Puppy.Type;                                           

public class main{

  public static void main(String [] args){

        System.out.print("My puppy name is ");
                Name();                                              // 可以直接呼叫                                       
                Puppy.Name();                                   // 也可以使用 取得類別方法                                                 
        
                     String dogName = Puppy.Name;      //取得類別屬性 = 類別名稱 . 類別屬性
                     String dogType = Puppy.Type;
                     int dogAge = Puppy.Age;
        
        System.out.print("I have a "+ Type + " dog, her name is " +Name+ ". she is "+Age+ " years old." );
    
    }

}

沒有留言:

張貼留言