
-
اصلاح کننده دسترسی ، که دسترسی یک کلاس، شی یا فیلد را توصیف می کند، مورد نیاز است: در غیاب آن، JVM (این منبع جادوی جهانی است) به طور خودکار یک شناسه پیش فرض را به بسته اختصاص می دهد.
با شروع از اصلاح کننده دوم، اصلاح کننده های غیر دسترسی وجود دارند که اجباری نیستند و همچنین می توانند با یکدیگر تضاد داشته باشند (اما اول از همه).
-
اصلاح کننده Static نشان می دهد که کلاس، شی یا فیلد ثابت است. اما این یعنی چه؟ اساساً ما آن را در زمین ها امتحان خواهیم کرد.
متغیرهای استاتیک، متغیرهای کلاس نامیده می شوند و برای تمام نمونه های آن کلاس منحصر به فرد هستند. متدهای استاتیک را می توان بدون ایجاد شیئی که در آن اعلان شده است فراخوانی کرد. کلاسهای استاتیک هنگام تودرتو کردن یک کلاس در کلاس دیگر استفاده میشوند و اصل تعامل بین کلاس داخلی و خارجی مشابه روشها است (این موضوع برای بحث جداگانه است). همچنین می تواند به عنوان یک بلوک جداگانه در یک شی استفاده شود.
-
اصلاح کننده نهایی به طور موثر به یک متغیر نشان می دهد که ثابت است. برای متدها - که نمیتوان آنها را در حین وراثت باطل کرد، اما برای کلاسها این نشانهای است که نمیتواند از آن به ارث برده شود (غیرقابل تغییر).
اصلاح کننده های ثابت و نهایی برای کلاس ها، اشیاء و فیلدها اعمال می شوند. با این حال، اصلاحکنندههایی وجود دارند که فقط برای برخی از آنها اعمال میشوند (یا حتی بخشی از آنها، زیرا هم یک متغیر و هم یک متد یک فیلد هستند، اما همه اصلاحکنندهها برای هر دو اعمال نمیشوند). اگر تشبیه کنیم، فقط چکمه ها و دستکش ها را می توان برای سرعت جادو کرد (برای اینکه سریعتر حرکت کنند)، اما جادو کردن کلاه برای سرعت بیهوده است (و شورای نظارت جهانی (تدوین کننده) اجازه نمی دهد).
-
اصلاح کننده Abstract فقط برای متدها و کلاس ها اعمال می شود . روش انتزاعی روشی بدون پیاده سازی (بدنه) است.
اگر یک کلاس به عنوان abstract علامت گذاری شود، یا حاوی متدهای انتزاعی است یا برای جلوگیری از ایجاد نمونه های آن کلاس انجام می شود. اگر یک قیاس ترسیم کنیم، در وسط دستورالعمل ها می توانید عنوان "رنگ آمیزی یک شی" را مشاهده کنید که پس از آن هیچ توضیحی وجود ندارد. آن ها با استفاده از این دستورالعمل می توانید یک شی ایجاد کنید و همچنین می توانید آن را رنگ آمیزی کنید، اما این دستورالعمل خاص نمی گوید که چگونه (دستورالعمل های خود را برای ایجاد یک شی قرمز بر اساس این شی بنویسید و نحوه رنگ کردن آن را توضیح دهید).
-
اصلاح کننده Syncronized فقط برای متدها استفاده می شود. وجود آن نشان می دهد که تنها یک رشته می تواند آن را در یک زمان اجرا کند. همچنین می تواند به عنوان یک بلوک جداگانه از کد در یک شی (مشخص کردن شی همگام سازی) استفاده شود.
-
اصلاح کننده فرار - فقط برای متغیرها . توصیه می شود برای متغیرهایی که می توانند به طور همزمان توسط چندین رشته استفاده شوند استفاده شود. متغیری با چنین اصلاحکنندهای هر بار که تغییر میکند فوراً از حافظه پنهان پردازنده به حافظه اصلی کپی میشود و به رشتههای موازی اجازه میدهد تا جدیدترین مقدار را دریافت کنند.
شایان ذکر است که فرار در مواردی قابل استفاده است که فقط یک رشته می تواند روی یک متغیر بنویسد و بقیه فقط می توانند از روی آن بخوانند. برای موارد دیگر، بهتر است اصلاحکننده همگامسازی شده را به روشهایی اضافه کنید که روی یک متغیر فرار مینویسند.
-
اصلاح کننده گذرا - فقط برای متغیرها . این اصلاحکننده متغیرهایی را که باید هنگام سریالسازی یک شی نادیده گرفته شوند، علامتگذاری میکند (این یک فرآیند هوشمندانه است که در اصل، خودتان میتوانید درباره آن مطالعه کنید...)*
* - من این مقاله را در سطح 17 نوشتم و تا آن زمان سریال سازی به عنوان یک فرآیند شرح داده نشده بود، بنابراین به شما توصیه می کنم به جای کپی پیست در صورت لزوم خودتان آن را مطالعه کنید.
- Final و Volatile - وقتی صحبت از متغیرها می شود، نمی توانیم همزمان بگوییم که نهایی است (ثابت) و چندین رشته توانایی تغییر آن را دارند ... بالاخره ثابت است و هر لحظه یک رشته می تواند آن را بخواند. ، اما یک رشته نمی تواند ثابت را تغییر دهد (شورای نظارت جهانی اجازه نمی دهد).
- Final و Abstract - کلاسها و متدها نمیتوانند هم انتزاعی باشند (که در بیشتر موارد نیاز به شفافسازی آنها برای پیادهسازی دارد) و هم نهایی، یعنی. تغییرناپذیر به نظر می رسد که دستورالعمل ها می گوید که چگونه از هر ماده (قسمت انتزاعی) یک کلاه ایمنی بادوام خوب ایجاد کنید، اما برای این کار نباید سوراخی در آن وجود داشته باشد (قسمت اجباری نهایی، قابل تغییر نیست).
- Abstract و Static - یک روش انتزاعی را نمی توان همزمان ثابت یا همزمان کرد. یک روش انتزاعی ایستا معنی ندارد، زیرا نه تنها کاری انجام نمی دهد، بلکه به کل کلاس تعلق دارد - نتیجه یک چیز بی فایده است.
- Abstract and Syncronized - همگام سازی کار با روشی که هیچ کاری انجام نمی دهد چه فایده ای دارد؟

GO TO FULL VERSION