Modifierها

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Java-menu.jpeg
خانه
متدها در جاوا
کلاس‌ها در جاوا
۱برنامه‌نویسی شیءگرایی
۲کلاس‌ها و اشیاء
۳خاصیت‌های کلاس
۴متدهای کلاس
۵سازنده‌ها
۶Modifier ها
۷کپسوله‌سازی
۸پکیج‌ها
۹ارث بری
۱۰چند ریختی
۱۱کلاس‌های داخلی
۱۲مفهوم انتزاعی
۱۳رابط‌ها
۱۴Enum ها
۱۵دریافت اطلاعات از کاربر
۱۶تاریخ و زمان
۱۷ArrayList
۱۸HashMap
۱۹کلاس‌های Wrapper
۲۰خطاهای جاوا
فایل‌ها در جاوا
مرجع جاوا
مثال‌های جاوا

تا این لحظه، شما با کلمه کلیدی public که تقریبا در تمام مثال‌های ما وجود داشته، کمی آشنا شدید: [۱]

public class MyClass

کلمه کلیدی public یک modifier دسترسی است و بدان معناست که میزان دسترسی برای کلاس‌ها، خاصیت‌ها، متدها و متدهای سازنده را مشخص می‌کند.

ما modifierها را به دو گروه تقسیم می‌کنیم:

  • Modifierهای دسترسی - سطح دسترسی را کنترل می‌کند
  • Modifierهای غیر دسترسی - سطح دسترسی را کنترل نمی‌کند اما امکانات دیگری را فراهم می‌کند

Modifierهای دسترسی

برای کلاس‌ها، شما می‌توانید از public یا default استفاده کنید:

Modifier توضیحات امتحان کنید
public به این نوع کلاس را می‌توان در هر کلاسی دسترسی داشت. نتیجه
default به این نوع کلاس تنها می‌توان درون پکیج مشترک دسترسی داشت. این نوع Modifier زمانی استفاده می‌شود که شما modifier ای برای کلاس خود مشخص نکنید. شما در مورد پکیج‌ها در فصل پکیج‌ها در جاوا مطالب بیشتری را خواهید آموخت. نتیجه

برای خاصیت‌ها، متدها و متدهای سازنده، شما می‌توانید یکی از modifierهای زیر را استفاده کنید:

Modifier توضیحات امتحان کنید
public کد برای تمامی کلاس‌ها قابل دسترس است. نتیجه
private کد تنها درون کلاس خود قابل دسترس است. نتیجه
default به این نوع کد تنها می‌توان درون پکیج مشترک دسترسی داشت. این نوع Modifier زمانی استفاده می‌شود که شما modifier ای برای کلاس خود مشخص نکنید. شما در مورد پکیج‌ها در فصل پکیج‌ها در جاوا مطالب بیشتری را خواهید آموخت. نتیجه
protected به این نوع کد تنها می‌توان درون پکیج مشترک و کلاس‌های فرزند دسترسی داشت. شما در مورد کلاس‌های والد و کلاس‌های فرزند در فصل ارث بری در جاوا مطالب بیشتری را خواهید آموخت. نتیجه

Modifierهای غیر دسترسی

برای کلاس‌ها، شما می‌توانید از کلمه final یا abstract استفاده کنید:

Modifier توضیحات امتحان کنید
final از این نوع کلاس نمی‌توان ارث بری داشت. (شما مطالب بیشتری را درمورد ارث بری در فصل ارث بری در جاوا خواهید آموخت. نتیجه
abstract از این نوع کلاس نمی‌توان برای ساختن شیء استفاده کرد. (دسترسی به یک کلاس abstract، این کلاس می بایست توسط کلاسی دیگری ارث بری شود. شما مطالب بیشتری را در مورد ارث بری و abstraction در فصل ارث بری و abstraction خواهید آموخت. نتیجه

برای خاصیت‌ها و متدها، شما می‌توانید از یکی از موارد زیر استفاده کنید:

Modifier توضیحات
final خاصیت‌ها و متدها از این نوع، را نمی‌توان بازنویسی/تغییر داد.
static خاصیت‌ها و متدهای مربوط به خود کلاس را مشخص می‌کند.
abstract از این نوع، تنها می‌توان درون کلاس‌های abstract و تنها برای متدها می‌توان استفاده کرد. متد فاقد بدنه است، برای مثال abstract void run();، بدنه متد توسط کلاس‌های فرزند (که این کلاس را ارث بری می‌کنند) فراهم می‌شود. شما در مورد ارث بری و abstraction در فصل‌های ارث بری و abstraction مطالب بیشتری را خواهید آموخت.
transient در هنگام انجام عمل serialize کردن، خاصیت‌ها و متدهای از این نوع نادیده گرفته می‌شوند.
synchronized به این نوع متد تنها می‌توان از یک thread و در یک زمان دسترسی داشت.
volatile مقدار یک خاصیت از این نوع در thread محلی ذخیره نمی‌شود و همیشه از حافظه اصلی خوانده می‌شود.

Final

اگر شما قابلیت بازنویسی برای خاصیت‌های موجود را نمی‌خواهید، خاصیت‌ها را به صورت final تعریف کنید:

مثال

 1 public class MyClass {
 2   final int x = 10;
 3   final double PI = 3.14;
 4 
 5   public static void main(String[] args) {
 6     MyClass myObj = new MyClass();
 7     myObj.x = 50; // will generate an error: cannot assign a value to a final variable
 8     myObj.PI = 25; // will generate an error: cannot assign a value to a final variable
 9     System.out.println(myObj.x);
10   }
11 }


مشاهدهٔ نتیجه


Static

یک متد static به این معناست که به این متد می‌توان برخلاف نوع public ، بدون شیءسازی از کلاس دسترسی داشت:

مثال

مثالی برای درک تفاوت بین متدهای static و public :

 1 public class MyClass {
 2   // Static method
 3   static void myStaticMethod() {
 4     System.out.println("Static methods can be called without creating objects");
 5   }
 6 
 7   // Public method
 8   public void myPublicMethod() {
 9     System.out.println("Public methods must be called by creating objects");
10   }
11 
12   // Main method
13   public static void main(String[ ] args) {
14     myStaticMethod(); // Call the static method
15     // myPublicMethod(); This would output an error
16 
17     MyClass myObj = new MyClass(); // Create an object of MyClass
18     myObj.myPublicMethod(); // Call the public method
19   }
20 }


مشاهدهٔ نتیجه


Abstract

یک متد abstract به یک کلاس abstract مربوط می‌شود، و فاقد بدنه است. بدنه توسط کلاس‌های فرزند فراهم می‌گردد:

مثال

 1 public class MyClass {
 2   // Static method
 3   static void myStaticMethod() {
 4     System.out.println("Static methods can be called without creating objects");
 5   }
 6 
 7   // Public method
 8   public void myPublicMethod() {
 9     System.out.println("Public methods must be called by creating objects");
10   }
11 
12   // Main method
13   public static void main(String[ ] args) {
14     myStaticMethod(); // Call the static method
15     // myPublicMethod(); This would output an error
16 
17     MyClass myObj = new MyClass(); // Create an object of MyClass
18     myObj.myPublicMethod(); // Call the public method
19   }
20 }


مشاهدهٔ نتیجه


منابع آموزشی