2 سال پیش / خواندن دقیقه

آموزش تنظیم کنندگان سطح دسترسی در جاوا (به زبان ساده)

آموزش تنظیم کنندگان سطح دسترسی در جاوا (به زبان ساده)

در این آموزش با انواع مختلف Access Modifier در جاوا و نحوه کار آن ها در سناریوهای مختلف آشنا می شوید.


Access Modifier چیست؟

تنظیم کنندگان سطح دسترسی کلمات کلیدی هستند که قابلیت دسترسی (میزان دسترسی) به کلاس ، اینترفیس ، متغیر ، عضو داده ، متد یا سازنده را تعیین می کنند. آنها همچنین به visibility modifier هم مشهور هستند.

با استفاده از تنظیم کنندگان سطح دسترسی، می توانید کد را کپسوله سازی کنید. به این معنی که می توان مشخص کرد چه بخشی از یک برنامه می تواند به اعضای یک کلاس دسترسی داشته باشد. بنابراین می توان از سوء استفاده از داده ها جلوگیری کرد.

انواع تنظیم کنندگان سطح دسترسی

تنظیم کنندگان سطح دسترسی در داخل پکیج

یک پکیج به سادگی یک ظرف است که انواع مختلف و مرتبط را جمع آوری می کند (کلاس های جاوا ، رابط ها ، شمارش و حاشیه نگاری).

چهار کلید واژه تنظیم کننده سطح دسترسی در جاوا وجود دارد که عبارتند از:

آموزش تنظیم کنندگان سطح دسترسی در جاوا (به زبان ساده)

تمام تنظیم کننده های سطح دسترسی در زیر به تفصیل توضیح داده شده اند.

۱-سطح دسترسی Default

اگر تنظیم کننده سطح دسترسی صریحا برای یک کلاس ، متغیر ، متد یا سازنده مشخص نشده باشد، فرض بر این است که سطح دسترسی default است.

مثال ۱ : سطح دسترسی default تعریف کنید

package defaultPackage;
class Logger {
void message(){
System.out.println(“This is a message”);
}
}

در اینجا ، کلاس Logger سطح دسترسی deafult دارد و برای کلاس هایی که به پکیج defaultPackage تعلق دارند قابل دسترسی است. اگر کلاس Logger را در پکیج های مختلف وارد (import) و سعی کنید آن را معرفی کنید ، خطا دریافت خواهید کرد.

۲- سطح دسترسی private

فقط متد ها و اعضای داده ها را می توان private اعلام کرد ، در حالی که کلاس ها یا رابط ها نمی توانند private اعلام شوند. با این حال ، کلاس های درونی در کلاس تو در تو می توانند private اعلام شوند.

اگر متد های دریافت کننده public در کلاس وجود داشته باشد ، می توانید به متغیرهای private در خارج از کلاس دسترسی پیدا کنید.

مثال ۲ : سطح دسترسی private تعریف کنید

public class Data {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.format = name;
}
}
public class Main {
Public static void main(String[] main){
Data d = new Data();
d.setName(“Programiz”);
System.out.println(d.getName());
}
}

خروجی

Programiz

در اینجا ، name یک متغیر private است و فقط در داخل کلاس Data قابل دسترسی است. اما ، با کمک متد های دریافت کننده public ، می توان در کلاس Main به آن دسترسی پیدا کرد.

۳- سطح دسترسی protected

سطح دسترسی protected در همان پکیج و همچنین کلاس هایی که مستقیما sub class کلاس پایه شما هستند، دسترسی ایجاد می کنند. فقط متد ها و اعضای داده می توانند protected شوند ، در حالی که کلاس ها یا رابط ها نمی توانند protected شوند.

مثال ۳ : سطح دسترسی protected تعریف کنید

// Logger.java
package package1;
public class Logger {
protected void debug(String logLine){
System.out.println(“Debug line: “+logLine);
}
}
// Main.java
package package2;
import package1.Logger;
public class Main extends Logger {
public static void main(String [] args){
Main logger = new Main();
// invokes debug() from Logger class
logger.debug(“hello from main”);
}
}

خروجی

Debug line: hello from main

مشاهده می کنید ، Logger.java و Main.java در پکیج های مختلف قرار دارند. متد ()debuge در کلاس Logger ، protected است و این متد فقط در داخل پکیج قابل دسترسی است. اما ، با این وجود ، در کلاس Main نیز قابل دسترسی است زیرا کلاس Main از کلاس Logger ارث بری می کند.

۴- سطح دسترسی public

سطح دسترسی public محدودیتی ندارد و می تواند در کلاس ها و رابط ها به همراه متدها ، اعضای داده و متغیرها اعمال شود.

مثال ۴ : سطح دسترسی public تعریف کنید

// Logger.java
public class Logger {
public int debugLevel = 1;
public void debug(String logLine){
System.out.println(“Debug: “+logLine);
}
public void info(String logLine){
System.out.println(“Info: “+logLine);
}
}
// LoggerImp.java
public class LoggerImp {
public static void main( String[] args ) {
Logger logger = new Logger();
logger.debug(“debug with level ” + logger.debugLevel);
logger.debugLevel = 5;
logger.info(“info with level ” + logger.debugLevel);
}
}

خروجی

Debug: debug with level 1

Info: info with level 5

در اینجا ، در کلاس LoggerImp ، توانستید کلاس Logger را ایجاد کنید زیرا public است. متغیرها و متد های داخل کلاس LoggerImp نیز public هستند. از این رو ، قادر به استفاده مستقیم از آن در کلاس LoggerImp هستید.

آموزش تنظیم کنندگان سطح دسترسی در جاوا (به زبان ساده)


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع