در این مطلب قصد داریم به این پرسش پاسخ دهیم که متد در جاوا چیست و به یادگیری مفهوم «متد» (Method) در زبان برنامهنویسی جاوا همراه با جزئیات تکمیلی آن از جمله انواع متد در جاوا، سینتکس آن و سایر موارد مهم پیرامون متدهای جاوا و ارائه مثالهای ساده برنامه نویسی میپردازیم.
متد در جاوا چیست ؟
به طور کلی، متد در برنامه نویسی قطعه کدی است که فقط در صورت فراخوانی، اجرا میشود. برای انتقال دادهها به یک متد، باید آنها را به عنوان پارامتر به متد ارجاع داد. متدها برای انجام یک سری اقدامات خاص استفاده میشوند و به عنوان تابع هم در نظر گرفته میشوند. در واقع متد در جاوا و سایر زبانهای برنامه نویسی همان تابع است، با این تفاوت که متدها در کلاسها تعریف و در بحث شیگرایی مطرح میشوند.
متد باید در یک کلاس «اعلان» (Declare) شود. تعریف متد در جاوا به این صورت است که ابتدا نام متد و به دنبال آن علامت پرانتز باز و بسته () میآید. جاوا برخی از متدهای از پیش تعریف شده را مانند System.out.println()
ارائه میدهد، اما میتوان متدهای مخصوص خود را هم برای پیادهسازی عملکردهای خاص تعریف کرد. در ادامه برای درک بهتر چیستی متد در جاوا و انواع آن از مثالی ساده استفاده شده است.
انواع متد در جاوا چیست ؟
برای شروع یادگیری متد در جاوا و معرفی انواع آن بهتر است از مثالی آسان کمک بگیریم:
package com.softwaretestinghelp;
public class DemoClass{
public static void main (String[] args){
System.out.println("Hello , this is sample program");
double d = Math.random();
System.out.println("Random Number:"+d);
}
}
همانطور که در کدهای بالا مشاهده میشود، این برنامه تنها عددی تصادفی را تولید کرده است و سپس آن را چاپ میکند. اگر نگاه دقیقتری به آن بیاندازیم، میبینیم که از ۲ متد در «متد اصلی» (main) استفاده شده است. این ۲ متد شامل موارد زیر هستند:
- System.out.println()
- Math.random()
این متدها در کلاس DemoClass
تعریف نشدهاند، بلکه در اینجا فقط از متدهایی استفاده شده است که از قبل به عنوان متدهای کتابخانه استاندارد جاوا وجود داشتهاند. انواع متد در جاوا به ۲ دسته تقسیم میشوند:
- متدهای ارائه شده در کتابخانه استاندارد جاوا
- متدهای تعریف شده توسط کاربران
در ادامه به بررسی هر کدام از این انواع متد در جاوا میپردازیم.
متد های ارائه شده در کتابخانه استاندارد جاوا
در کتابخانه استاندارد جاوا متدهای در دسترس و قابل استفاده زیادی گردآوری شدهاند. این کتابخانهها به وسیله کتابخانه class در جاوا ارائه شدهاند. این کتابخانه در فایل آرشیو جاوا وجود دارد که در طول اجرای «محیط زمان اجرای جاوا» (JRE | Java Runtime Environment) و «ماشین مجازی جاوا» (JVM | Java Virtual Machine) در دسترس است.
برای استفاده از این کتابخانهها در کدهای پروژه جاوا، باید یک فایل jar به نام stdlib.jar به مسیر کلاس جاوا اضافه شود. برخی از متدهای کتابخانه استانداردی که معمولاً استفاده میکنیم، متدهای کتابخانه ریاضی مانند Math.random()
و Math.sqrt()
یا متدهای String مانند equals()
برای مقایسه دو رشته یا concat()
برای اتصال دو رشته هستند.
متد های تعریف شده توسط کاربران
در کنار متدهای آماده کتابخانه استاندارد، برنامهنویس میتواند متد خود را نیز برای انجام کاری خاص ایجاد کند. این متدها به عنوان «متدهای تعریف شده توسط کاربر» (User Defined Methods) نامیده میشوند. برای ساخت متدهای خود، نیاز است که اول مفاهیم و قوانین ایجاد متدها را درک کنیم. بنابراین در ادامه سینتکس (قواعد نحوی) متد در جاوا شرح داده شده است تا با یادگیری آن بتوانیم در برنامههای خود متد ایجاد و از آن استفاده کنیم.
سینتکس متد جاوا
با در نظر گرفتن تعریف اصطلاح متد، مشخص میشود که متدها در جاوا و سایر زبانهای برنامه نویسی به عنوان ساز و کارهایی مرتبط با یک کلاس به حساب میآیند. به بیان سادهتر، متد قطعه کدی دارای مجموعهای از دستورها برای اجرای عملکردهای خاص است. این بلوک کد، هنگام فراخوانی متد اجرا شده و دادهها نیز به عنوان پارامترهایی شناخته میشوند که میتوان آنها را به متد ارجاع داد.
در اینجا این سؤال اساسی مطرح میشود که هدف استفاده از متد چیست؟ هدف از به کارگیری متد در جاوا، «امکان استفاده مجدد از کد» است. برای مثال وقتی قطعه کدی را یک بار در متدی تعریف میکنیم، میتوان بارها و بارها در بخشهای مختلف برنامه از آن استفاده کرد. حال سینتکس متد را تعریف میکنیم، ولی پیش از آن، متد نمونه زیر را مشاهده کنید:
public static void sampleMethod(int a,int b) throws ArithmeticException{
System.out.println("Hello, this is sample method");//<- Method body
int c = a/b;
System.out.println("c:"+c);
}
سینتکس متد در جاوا به صورت زیر ارائه میشود:
modifier non-access_modifier returnType methodName (parameters) throws Exception exceptionName{ // method body }
اجزای سینتکس متد در جاوا
در ادامه هر یک از اجزای سینتکس متد در جاوا به ترتیب فهرست شده است.
- «تنظیم کنندهها» (Modifier): اینها میتوانند از نوع «تنظیم کننده سطح دسترسی» (Access Modifiers) باشند. به عنوان مثال، public
(عمومی)، private
(خصوصی) و از جمله کلمههای کلیدی در جاوا برای تعیین سطح دسترسی به حساب میآیند. همچنین یک Modifier میتواند از نوع «تنظیم کننده بدون دسترسی» (Non Access Modifiers) مانند Static باشد.
- «نوع داده بازگشتی» (Return Type): وقتی متد مقداری را بازمیگرداند، نوع داده آن باید مشخص باشد. همچنین اگر متد هیچ مقداری را بازنگرداند، در تعریف آن از کلمه کلیدی Void استفاده میشود، نوع Void به این معنی است که متد هیچ مقداری را بازنمیگرداند.
- «نام متد» (Method Name): پس از تعیین نوع بازگشت، نام متد مشخص میشود که از قراردادهای نامگذاری تبعیت میکند و به نوعی مانند نامهای فیلد در جاوا است.
- «پارامترها» (Parameters): این بخش از سینتکس متد در جاوا لیستی از نام پارامترهای ورودی با تعیین نوع داده آنها است که به وسیله کاما از هم جدا میشوند. این لیست داخل علامتهای پرانتز باز و بسته () محصور میشود. اگر هیچ پارامتری مشخص نشده باشد، این لیست یک پرانتز خالی خواهد بود.
- «لیست استثنا» (Exception List): یک لیست از استثنائات است که به وسیله کاما از هم جدا میشوند و متد میتواند این استثناها را ایجاد کند.
- «بدنه متد» (Method Body): این محلی است که کدهای متد در داخل آن قرار میگیرند. بدنه با علامت آکولادهای باز و بسته {} محصور میشود.
اکنون پس از شرح اجزای سینتکس متد در جاوا، در ادامه این اجزا در تصویر زیر برای مثال قبلی مشخص شدهاند، تا بتوان درک بهتری نسبت به آنها بدست آورد.
در ادامه این مطلب به شرح نحوه فراخوانی متد در جاوا پرداخته شده است، اما پیش از آن به معرفی مجموعه دورههای آموزش جاوا میپردازیم.
معرفی فیلم های آموزش زبان برنامه نویسی جاوا
زبان برنامه نویسی جاوا، زبانی قدرتمند با کاربردهای فراوان است که در زمینههای مختلف استفاده میشود. برای یادگیری هر چه بیشتر و بهتر جاوا و استفاده درست بر اساس نیازمندیهای پروژهای که در آن فعالیت میکنیم، نیاز به استفاده از منابع آموزشی جامع و کاربردی وجود دارد. تم آف یکی از سایتهای فارسی زبانی به حساب میآید که در آن دورههای آموزشی بسیاری در حوزههای مختلف به ویژه در زمینههای مربوط به کامپیوتر و برنامه نویسی ارائه شده است.
دورههای مختلف براساس موضوع در مجموعههای آموزشی گوناگونی دستهبندی شدهاند که یکی از این مجموعههای آموزشی مختص زبان جاوا است. دورههای این مجموعه شامل آموزش جامع برنامه نویسی جاوا از سطوح مقدماتی تا پیشرفته، مباحث شیگرایی، پایگاه دادهها در جاوا، نحوه پیادهسازی انواع پروژهها در حوزههای مختلف و آموزشهای پروژه محور و تمرینی با جاوا هستند.
- برای دسترسی به صفحه مجموعه دورههای ویدیویی آموزش جاوا تم آف + کلیک کنید.
فراخوانی متد در جاوا
اکنون که آشنایی لازم با سینتکس متد در جاوا بدست آمده است، میتوان در ادامه به نحوه استفاده از آن پرداخت.
فراخوانی متد کلاس در جاوا
در این بخش، متد از نوع دسترسی static تعریف شده است. از این رو، این متد را میتوان بدون ایجاد «وهلهای» (Instance) از کلاس فراخوانی کرد، بنابراین به طور مستقیم، یعنی به صورت DemoClass.sampleMethod(4,2)
فراخوانی میشود. منظور از وهله در شیگرایی همان شی ساخته شده از کلاس است. در مثال زیر نحوه فراخوانی متد یک کلاس در جاوا نشان داده شده است.
package com.softwaretestinghelp;
public class DemoClass{
public static void sampleMethod(int a,int b) throws ArithmeticException{
System.out.println("Hello, this is sample method");
int c = a/b;
System.out.println("c:"+c);
}
public static void main (String[] args){
DemoClass.sampleMethod(4,2);
}
}
خروجی برنامه به صورت زیر است:
Hello, this is sample method c:2
فراخوانی متد با استفاده از شی کلاس در جاوا
در این بخش، سطح دسترسی متد به صورت static تعریف نشده است. بنابراین، برای فراخوانی متد ابتدا یک وهله از کلاس (یا همان شی) ایجاد شده است و متد به وسیله آن شی ساخته شده یعنی به صورت یعنی new DemoClass().sampleMethod(4,2)
فراخوانی میشود.
package com.softwaretestinghelp;
public class DemoClass{
public void sampleMethod(int a,int b) throws ArithmeticException{
System.out.println("Hello, this is sample method");
int c = a/b;
System.out.println("c:"+c);
}
public static void main (String[] args){
new DemoClass().sampleMethod(4,2);
}
}
خروجی برنامه به صورت زیر است:
Hello, this is sample method c:2
فراخوانی چندین متد در جاوا
همانطور که در کد مثال زیر مشاهده میشود، میتوان متد یکسانی را چندین بار با پارامترهای ورودی مختلف فراخوانی کرد.
package com.softwaretestinghelp;
public class DemoClass{
public static void sampleMethod(int a,int b) throws ArithmeticException{
System.out.println("Hello, this is sample method");
int c = a/b;
System.out.println("c:"+c);
}
public static void main (String[] args){
DemoClass.sampleMethod(4,2);
DemoClass.sampleMethod(4,2);
DemoClass.sampleMethod(6,2);
}
}
خروجی برنامه به صورت زیر است:
Hello, this is sample method c:2 Hello, this is sample method c:2 Hello, this is sample method c:3
پارامتر و آرگومان متد در جاوا چیست ؟
حال در این بخش ابتدا به معرفی و آموزش پارامتر در متدهای جاوا پرداخته میشود و پس از آن نیز آرگومانها را بررسی میکنیم.
پارامتر متد در جاوا
همانطور که در متد استفاده شده در مثال بالا مشاهده میشود، هنگام فراخوانی متد، اطلاعاتی را به آن ارسال میکنیم. این اطلاعات پارامتر نامیده میشوند. طبق مثالی که داریم، در sampleMethod (int a, int b)
ملاحظه میشود که a
و b
پارامترهای ارجاع شده به این متد هستند. این پارامترها به عنوان متغیرهای داخل متد عمل میکنند.
package com.softwaretestinghelp;
public class DemoClass{
public static void sampleMethod(int a,int b) throws ArithmeticException{
System.out.println("Hello, this is sample method");
int c = a/b;
System.out.println("c:"+c);
}
public static void main (String[] args){
DemoClass. sampleMethod(4,2);
}
}
در سینتکس متد، دیدیم که a
و b
پارامترهای مشخص شده در داخل پرانتز () هستند. نوع داده این پارامترها باید به همراه نام پارامتر مشخص شوند. به عنوان مثال، نوع داده پارامتر a
از نوع عدد صحیح int
مشخص شده است. این نوع داده میتواند برای هر نوع داده معتبر جاوا، مانند رشتهها یا هر شئ دیگری استفاده شود. میتوان هر تعداد پارامتر را برحسب نیاز در متدهای جاوا مشخص کرد، این پارامترها با کاما از یکدیگر جدا میشوند. برای مثال پارامترها را میتوان به صورت (int a, int b, double c, String d)
تعریف کرد.
آرگومان متد در جاوا
وقتی متدی را فراخوانی میکنیم، مقادیر واقعی مثل اعداد برای پارامترها ارسال میشوند که به این مقادیر واقعی «آرگومان» (Argument) گفته میشود. برای مثال زمانی که در حال فراخوانی sampleMethod()
هستیم، مقادیر واقعی ۲ و ۴ را به DemoClass.sampleMethod(4,2)
ارجاع میدهیم. در اینجا، فهرستی از مقادیر واقعی که ارسال میکنیم، یعنی آرگومانها باید دقیقاً با فهرست پارامترها مطابقت داشته باشند، یعنی تعدادی از پارامترها و نوع داده آنها. برای مثال:
بنابراین، مقدار ۴ به پارامتر a و مقدار ۲ به پارامتر b اختصاص مییابد. براساس اقدامات داخلی مربوط به ()sampleMethod، تغییراتی روی a و b صورت میگیرد.
public static void sampleMethod(int a, int b) throws ArithmeticException{
System.out.println("Hello, this is sample method");
int c = a/b; // int c = 4/2 which gets calculated as 2
System.out.println("c:"+c); // c: 2
}
پیش از این برای مفهوم آرگومان در برنامه نویسی مطلب جامعی منتشر شده است که مطالعه آن برای درک بهتر این اصطلاح پیشنهاد میشود.
آرگومان در برنامه نویسی چیست ؟ — به زبان ساده
مقادیر بازگشتی در متدهای جاوا
هر متد جاوا، دستورات نوشته شده در بدنه متد را اجرا میکند تا اعمال مورد نظر به منظور بدست آوردن نتیجه مطلوب انجام شوند. سپس متد میتواند مقدار خروجی را به متد فراخوانی کننده بازگرداند.
بازگشت در متدهای جاوا با هر مقدار ممکن
در حالتی که نیاز باشد متد هر نوع مقداری را بازگرداند لازم است هر یک از موارد زیر لحاظ شوند:
- نوع داده مقدار بازگشتی باید در هر متد تعیین شود.
- «گزاره بازگشتی» (Return Statement) باید در انتهای متد نوشته شوند.
package com.softwaretestinghelp;
public class DemoClass{
public static int sampleMethod(int a,int b) throws ArithmeticException{
//[1] int as data type of return value
System.out.println("Hello, this is sample method");
int c = a/b; // int c = 4 / 2 gets calculated as 2
System.out.println("c:"+c); // c: 2
return c;//return statement
}
public static void main (String[] args){
int x = DemoClass.sampleMethod(4,2);//return value is assigned to variable x
System.out.println("x:"+x); // x: 2
}
}
خروجی برنامه به صورت زیر است:
Hello, this is sample method c:2 x:2
همانطور که در اینجا مشاهده شد، باید یک گزاره یا عبارت بازگشتی وجود داشته باشد. البته ممکن است در برخی موارد نیاز به استفاده از چند عبارت بازگشتی در متد به وجود بیاید. این اتفاق معمولاً زمانی رخ میدهد که در برنامه از حلقه if-else استفاده شده باشد. برای مثال در قطعه کد زیر از حلقه if-else if و چندین گزاره بازگشتی استفاده شده است.
package com.softwaretestinghelp;
public class DemoClass{
public static String getGrade(int percentage ) {
if(percentage>=60){
System.out.println("A grade");
return "A grade"; //Return statement
}else if(percentage>=40){
System.out.println("B grade");
return "B grade"; //Return statement
}else {
System.out.println("Not Eligible");
return "Not Eligible"; //Return statement
}
}
public static void main (String[] args){
System.out.println("Hello , this is sample program");
String grade = DemoClass.getGrade(70);
System.out.println("Grade:"+grade);
}
}
متد بدون مقدار بازگشتی در جاوا
زمانی که متد هیچ مقداری را به متد فراخوانی کننده خود بازنگرداند، آنگاه نوع داده بازگشتی متد باید به عنوان void تعیین شود.
package com.softwaretestinghelp;
public class DemoClass{
public static void sampleMethod(int a,int b) throws ArithmeticException{
//[1] void as method does not return any value
System.out.println("Hello, this is sample method");
int c = a/b; // int c = 4 / 2 which comes as 2
System.out.println("c:"+c); // c: 2 // No return statement
}
public static void main (String[] args){
DemoClass.sampleMethod(4,2); //No result value is returned from the method
}
}
خروجی برنامه به صورت زیر است:
Here is the program Output: Hello, this is sample method c:2
تعیین کننده سطح دسترسی در متدهای جاوا
پیشتر متدی را مشاهده کردیم که با سطح دسترسی «static» (ایستا) تعریف شده بود. در چنین حالتی متد با استفاده از خود کلاس مثلاً به صورت DemoClass.sampleMethod()
فراخوانی میشود یا درواقع به اصطلاح متد را روی کلاس فراخوانی میکنیم. همچنین زمانی که سطح دسترسی یک متد به صورت static تعیین نمیشود، به آن یک «متد وهله» (Instance Method) میگویند. یعنی متد باید از وهلهای از کلاس فراخوانی شود. برای مثال باید کد آن را به صورت new DemoClass().sampleMethod()
بنویسیم. همچنین متد میتواند به عنوان private
، public
، protected
و default
مشابه فیلد جاوا تعیین شود.
تخصیص حافظه برای فراخوانی های متد
در جاوا، مدیریت حافظه از طریق «حافظه آزاد» (Heap) و «پشتهها» (Stacks) انجام میشود. Heap مکانی است که اشیای جاوا در آن ذخیره میشوند، ولی در مورد متدها، مدیریت فراخوانی آنها توسط پشته صورت میگیرد. هنگام فراخوانی متد، «قاب پشته» (Stack Frame) ساخته شده و آرگومانها ارجاع داده میشوند، پس از آن مقدار بازگشتی متد ذخیره سازی میشود. با اتمام اجرای متد، قاب پشته اختصاص داده شده، حذف میشود.
سربارگذاری متد در جاوا چیست ؟
در مثال برنامه جاوا، مشاهده کردیم که متد در جاوا چطور میتواند به صورت sampleMethod(int a, int b)
تعریف و استفاده شود. حال میخواهیم به پاسخ این پرسش بپردازیم که آیا میتوان بیش از یک متد با نام یکسان داشت؟ یعنی آیا میتوان چندین متد را با نام sampleMethod()
در یک کلاس DemoClass
تعریف کرد؟
پاسخ این پرسش مثبت است. این سناریو را در نظر بگیرید، وقتی بخواهیم متدی برای جمع کردن ۲ عدد تعریف کنیم، ولی این ۲ عدد میتوانند ۲ «عدد صحیح» (integer) یا از نوع double باشند. در چنین سناریویی، نیاز به ۲ متد متفاوت با نام مشابه addNumbers()
خواهیم داشت. این عملکرد در جاوا، «سربارگذاری متد» (Method Overloading) نامیده میشود. یعنی تعریف چندین متد در کلاس با یک نام، به شرطی که این متدها تعداد پارامترهای متفاوت یا انواع داده مختلفی از پارامترها را دریافت کنند. در ادامه مثالی برای درک بهتر این مفهوم ارائه شده است.
package com.softwaretestinghelp;
public class MethodsDemoClass {
public static void add(int a, int b) {
System.out.println("Hello, this is add method");
int c = a + b;
System.out.println("c:" + c);
}
public static void add(double a, double b) {
System.out.println("Hello, this is add method");
double c = a + b;
System.out.println("c:" + c);
}
public static void main(String[] args) {
MethodsDemoClass.add(4, 2);
MethodsDemoClass.add(4.2, 2.3);
}
}
خروجی برنامه به صورت زیر است:
Hello, this is add method c:6 Hello, this is add method c:6.5
سوالات متداول
در این بخش به برخی از پرسشهای رایج پیرامون متد در جاوا پاسخ داده شده است.
چگونه در جاوا یک متد ایجاد کنیم ؟
متدهای تعریف شده توسط کاربر بر اساس سینتکس متد جاوا ایجاد میشوند، یعنی تعریف متد با بدنه متد به شرح زیر است.
modifier non-access_modifier returnType methodName (parameters) throws Exception exceptionName{ // method body }
در ادامه مثالی برای استفاده از سینتکس متد در جاوا آمده است.
public static void someCalculation(int x, int y) throws ArithmeticException{ int z = x/y ; }
انواع متدها در جاوا چیست ؟
دو نوع متد در جاوا وجود دارد که شامل متدهای ارائه شده در کتابخانه استاندارد جاوا و متدهای تعریف شده توسط کاربر میشود.
متد main در جاوا چیست ؟
متد main()
در جاوا به عنوان نقطه شروع کدهای برنامه به حساب میآید. این متد از پیش تعریف شده و در JVM پیکربندی شده است. برای اجرای یک برنامه جاوا، JVM به دنبال متد main()
میگردد و دستورات را در متد main()
اجرا میکند. سینتکس متد main()
به صورت زیر است:
public static void main(String[] args){}
پارامتر args آرایهای از کلاس String است. آرگومانهای خط فرمان از طریق پارامتر args ارسال میشوند.
آیا متد و تابع در جاوا یکسان هستند ؟
مفهوم «متد» (Method) و «تابع» (Function) یکسان است. مفهومی در برنامه نویسی شی گرا داریم که طبق آن، قطعه کدی وجود دارد که میتواند در هر نقطه برنامه فراخوانی شود و استفاده مجدد از آن امکانپذیر است. در جاوا، این مفهوم با نام متد شناخته میشود.
چرا در جاوا از متدها استفاده می شود؟
متدها در کلاسهای جاوا برای پیادهسازی برخی کارکردهای خاص ساخته میشوند. معمولاً متدهای نوشته شده، ممکن است لازم باشد چندین بار در برنامه کاربردی جاوا استفاده شوند. متدها باعث ذخیره وقت و انرژی ما میشوند. تا هر بار که برای انجام یک کار یکسان کدی مورد نیاز است، از همان بلوک کد قبلی استفاده کنیم. به مثال زیر توجه کنید.
public int add(int a, int b){
return a+b;
}
بنابراین، هدف اصلی به کارگیری یک متد، امکان استفاده مجدد از آن برای صرفهجویی در زمان، انرژی و بهبود خوانایی و ارتقای قابلیت نگهداری برنامههای جاوا است.
متد print در جاوا چیست ؟
متد print()
جاوا برای چاپ متن در کنسول و نگه داشتن نشانهگر در انتهای متن استفاده میشود. یعنی زمانی که متد print()
بعدی فراخوانی میشود، چاپ متن از انتهای این محل شروع میشود. هر نوع داده یا شیء اولیه جاوا را میتوان به عنوان آرگومان ارسال کرد و در کنسول به صورت متن نمایش داد.
برای مثال، void print(String s)
یعنی متد یک رشته را چاپ میکند. یا void print(int s)
یعنی متد یک مقدار عدد صحیح را چاپ میکند.
جاوا علاوه بر متد print()
دارای متد println()
هم است. متدی که به جز برای موقعیت نشانهگر، مانند متد print()
عمل میکند. یعنی هر بار که متد println()
فراخوانی میشود، متن را چاپ میکند و نشانهگر را به ابتدای خط بعدی منتقل میکند.
شی گرایی در جاوا چیست ؟ — تعریف، مفهوم و تمرین به زبان ساده
جمع بندی
در این آموزش، مفهوم متدهای جاوا به طور مفصل بررسی شد و سینتکس متد را به همراه مفهوم پارامترها – آرگومانها، نوع بازگشتی، دسترسی به توصیفگرها، نوع متدها و متد سربار گذاری مشاهده کردیم.