متد ها (method) را می توان همانند یک ابزار برای یک تعمییر کار می توان در نظر گرفت.مثلا با یک آچار می توان تعدادی پیچ را باز کرد.
طریقه کار به اینصورت می باشد که هر زمان که نیاز به آچار برای باز کردن پیچی داشته باشیم باید آچار را بیاوریم.
فرض کنید آچار را به صورت یک متد تعریف کنیم ، آنوقت برای اینکه بتوانیم از آچار استفاده کنیم باید آن را فراخوانی کنیم.
خوب متد ها حتما باید درون کلاس ها تعریف شوند.
متد ها در جاوا حتما باید مقداری را برگردانند (return) کنند. اما می توانیم متدی داشته باشیم که مقدار هیچ یا پوچ (void) را برگردانند.
شکل کلی تعریف متد ها در جاوا :
[access-modifier] [static] DataType MethodName {
     // statement
}
access-modifier چهار نوع می باشد :
1- private
2- public
3- protected
4- default access

static :بر حسب نیاز می توان از این نوع استفاده کرد (در بخش های بعدی توضیح داده می شود).
DataType :یا نوع داده ایی. نوع داده ایی می باشد که متد بر می گرداند.
نوع داده ایی می تواند از نوع int ، long ، byte، short یا صحیح ، float ، double یا اعشاری ، char یا کاراکتری ، String یا رشته ، boolean یا بولی که دو مقدار true یا false‌را بر میگرداند.
مثال :
int a = -100;
int b = 1000;
int c = -10000;
int d = 100000000000;
float e = 12.34f;
double f = -56.78;
boolean iLoveJava = true;
char aChar = 'a';
String greeting = "Hi, there!";
خوب، حالا نحوه ایجاد یک تابع و فراخوانی آن در برنامه.ولی قبل از آن توضیحی درباره دستور new در جاوا و دسترسی به متغییر ها و متد ها با استفاده از ایجاد کردن شی (object) ارائه می دهیم که برای درک موضوع لازم می باشد.
دستور new : ایجاد یک نمونه یا آبجکتی از نوع کلاس را در فضایی از حافظه ایجاد می کند و با استفاده از آن آبجکت می توان به عناصر موجود در کلاس دسترسی پیدا کرد. این عناصر می تواند متغییر ها ، متد ها باشد که با فراخوانی می توان از آنها استفاده کرد یا تغییراتی در مقدار آنها ایجاد کرد.
ابتدا کلاسی به نام A ایجاد می کنیم.
public class A {
  int n1=10, n2=20; s = 0;
  public void sum(){
    s= n1+n2;
  }
  public void display(){
     System.out.println("Sum of numbers : " + s);
  }
  public static void main(String[] args){
    A obj = new A();
    obj.sum();
    obj.display();
  }
}
خروجی به صورت زیر می باشد :
 sum of numbers : 30
توضیح : دو متد با نام sum و dispaly از نوع void ایجاد کردیم.چون نوع آنها void می باشد هیچ مقداری را برنمی گردانند.متد sum مقدار دو متغییر را محاسبه می کند. متد display مقدار محاسبه شده را چاپ می کند.
برای دسترسی به متغییر ها و متد های یک کلاس باید از آن کلاس یک آبجکت با استفاده از دستور new ایجاد کنیم
A obj = new A();
حالا با استفاده از نام آبجکت به صورت زیر می توانیم به عناصر کلاس دسترسی پیدا کنیم
obj.sum();
obj.display();
برای اینکه از متد های یک کلاس در متد main آن کلاس بتوانیم استفاده کنیم حتما باید آبجکتی از کلاس در در main ایجاد کنیم
مگر اینکه متد ها و متغییر ها را static تعریف کنیم که بدون ایجاد نمونه قابل دسترسی هستند
public static void b(){

}
که میتوان در متد main به صورت زیر فراخوانی شود
public static void main(String[] args){
b();
}
به طور کلی اشیای دنیای واقعی را می توان در جاوا با استفاده از کلاس ها مدل سازی کرد. یک مثال رایج در این مورد اطلاعات دانشجو می باشد که می توان دانشجو را در یک کلاس مدل سازی نمود:
public class Student {
  String firstName;
  String lastName;
  int phoneNumber;
  int stNumber;  
  String city;
}
نحوه مقدار دهی به متغییر ها به صورت مستقیم و با استفاده از متد ها را در بخش های بعدی بعد از اینکه مفهوم کانستراکتور یا سازنده ها (constructor) را توضیح دادیم ارائه می دهیم.
حالا که از متد ها با نوع داده ایی void را آموختیم متدی با نوع داده ایی دیگر مثلا String را بررسی می کنیم.
اگر متد ما از نوع void نباشد و از نوع دیگر مانند int, double, char, String, short, boolean, یا حتی از نوع یک کلاس باشد حتما باید یک مقدار از همان نوع برگرداند.
با استفاده از دستور return می توانیم مقداری را برگردانیم. به مثال زیر توجه کنید :
public String methodA(){
return "return by methodA()";
}

نوع داده ایی متد methodA از نوع رشته ایی یا String  می باشد که حتما باید در این متد مقداری از نوع رشته با استفاده از دستور return برگردانده شود.
متدی با نوع داده ایی int ایجاد می کنیم :
public int number(){
return 10+1;
}

مقداری که برگردانده می شود مقدار صحیح 11 می باشد.
متد ها میتوانند مقداری را از ورودی بگیرند و محاسباتی بر روی داده های وارد شده انجام دهد و مقداری از نوع DataType یا نوع داده ایی متد برگردانند.برای مثال برنامه جمع دو عدد را با استفاده از متدی که دو مقدار صحیح را میگیرد و جمع را انجام می دهد و مقدار مجموع را بر می گرداند.
public class Test
{

public int sum(int n1, int n2)
{
    return n1+n2;
  }
  public static void main(String[] args)
{
    Test obj = new Test();
    System.out.println("sum of 10 and 20 : " + obj.sum(10,20));
    int num1 = 25, num2 = 10;
    int s = obj.sum(num1,num2);
    System.out.println("Sum of " + num1 + " and " + num2 + " : " + s);
  }
}
توضیح :
متد sum با دو آرگومان از نوع صحیح به نام n1 و n2 ایجاد کردیم که وظیفه این متد برگرداندن مجموع آرگومان ها می باشد.
برای دسترسی در متد main یک شی از کلاس ایجاد کردیم
 Test obj = new Test();
با استفاده از آبجکت ایجاد شده متد sum را با مقدار دهی آرگومان فراخوانی کردیم
System.out.println("sum of 10 and 20 : " + obj.sum(10,20));
مقدار return شده از متد sum که صحیح می باشد با رشته موجود در println‌ الحاق می شود و در خروجی نمایش داده می شود.
متد sum دارای دو متغییر صحیح در آرگومان خود دارد و میتوان در هنگام فراخوانی با متغییری از نوع صحیح فراخوانی را انجام داد
int num1 = 25, num2 = 10;
int s = obj.sum(num1,num2);