ساخت یک روش (Method) جدید در یک کلاس (Class)، در برنامه نویسی اندروید
فرض کنید که یک کلاس با نام MyClass داریم که کدهای آن به صورت زیر می باشد :
import junit.framework.TestCase;
public class MyClass extends TestCase {
}
اکنون فرض کنید که بخواهیم یک روش (method) جدید برای این کلاس (class) تعریف کنیم که دو عدد را دریافت کند و ضرب آن دو عدد را برگرداند، برای این منظور، باید کدهای زیر را در میان کدهای کلاس بنویسیم :
int number3 = number1*number2;
return number3;
}
یعنی کدهای کلاس MyClass به صورت زیر خواهد بود :
import junit.framework.TestCase;
public class MyClass extends TestCase {
public int Calculate (int number1, int number2) {
int number3 = number1*number2;
return number3;
}
}
اگر بخواهیم در یک Activity دلخواه از برنامه اندروید، روش Calculate از کلاس MyClass را اجرا کنیم، باید کدهای زیر را در میان کدهای آن Activity بنویسیم :
int MyNumber1 = 2;
int MyNumber2 = 3;
int MyNumber3 = myClass.Calculate(MyNumber1, MyNumber2);
ساختار کلی یک روش (method) :
در واقع، ساختار کلی یک روش (method) به صورت زیر می باشد :
// operations to be performed;
return return_object;
}
به جای name_of_method ، باید نام مورد نظرمان برای روش (method) را بنویسیم. به جای return_type ، باید نوع متغیری (شیء) که تسط روش (method) برگردانده می شود را بنویسیم. به جای Access_modifier نیز باید یکی از موارد زیر نوشته شود که چگونگی دسترسی به روش (method) را مشخص می کند (تعیین دسترسی های مجاز) :
1- public
2- protected
3- Access_modifier عدم مشخص کردن (Default)
4- private
دقت شود که بعد از Access_modifier ، می توانیم یک non-access modifier را بنویسیم (یا می توان اصلا آن را ننوشت) که برای آن، مواردی مثل موارد زیر را داریم :
static و final و abstract و synchronized و native و volatile و transient و ...
یعنی مثلا برای public ، می توانیم حالت های زیر را داشته باشیم (با فرض اینکه static را انتخاب کرده باشیم) :
1- public
2- public static
همان طور که گفتیم، Access_modifier ، چگونگی دسترسی به روش (method) را تعیین می کند (تعیین Modifier برای روش)، این موضوع، در جدول زیر به طور کامل بیان شده است (کلمات بله و خیر، داشتن دسترسی به روش را برای هر یک از آن موارد مشخص کرده اند) :
World | Subclass | Package | Class | Modifier |
بله | بله | بله | بله | public |
خیر | بله | بله | بله | protected |
خیر | خیر | بله | بله | بدون مشخص کردن Modifier |
خیر | خیر | خیر | بله | private |
به جای parameters ، باید ورودی های روش (method) و همچنین نوع آنها را بنویسیم (ابتدا نوع آنها نوشته می شود و سپس نامی که می خواهیم برای ورودی دریافت شده، قرار داده شود).
در آخر هم، به جای عبارت // operations to be performed; ، کدهای مورد نظرمان برای روش (method) را می نویسیم. return_object نام متناظر با متغیری (شیء) است که روش (method) برمی گرداند، بنابراین آن را باید بر طبق کدهای روش (method) تعیین کنیم.
چنانچه روش (method) مورد نظر، هیچ مقداری را برنمی گرداند (دیگر کلمه return را نخواهیم داشت و روش، هیچ خروجی به ما نمی دهد)، در این صورت باید به جای return_type ، کلمه void را بنویسیم. یعنی مشابه کد زیر :
import junit.framework.TestCase;
public class MyClass extends TestCase {
public void Calculate (int number1, int number2) {
// some code
}
}
چنانچه روش (method)، هیچ ورودی دریافت نکند، باید پرانتز جلوی نام آن را به صورت خالی بگذاریم (نباید پرانتز حذف شود). یعنی مشابه کد زیر :
import junit.framework.TestCase;
public class MyClass extends TestCase {
public void Calculate () {
// some code
}
}