גישה לשינויים ב-Java

גישה לשינויים ב-Java

ב-Java מתני גישה הם כלים חיוניים המגדירים כיצד חברי מחלקה אוהבים שיטות משתנים ואפילו למחלקה עצמה ניתן לגשת מחלקים אחרים של התוכנית שלנו.

ישנם 4 סוגים של משנה גישה זמינים ב-Java: 

Access-Modifiers-in-Java-1גישה לשינויים ב-Java

משנה גישה פרטית

משנה הגישה הפרטית מצוין באמצעות מילת המפתח פרטית. השיטות או חברי הנתונים שהוכרזו כפרטיים נגישים רק בתוך המחלקה שבה הם מוכרזים.

Java
   class   Person     {      // private variable      private     String     name  ;      public     void     setName  (  String     name  )     {      this  .  name     =     name  ;     // accessible within class      }      public     String     getName  ()     {     return     name  ;     }   }   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      Person     p     =     new     Person  ();      p  .  setName  (  'Alice'  );      // System.out.println(p.name); // Error: 'name'      // has private access      System  .  out  .  println  (  p  .  getName  ());      }   }   

תְפוּקָה
Alice  

הֶסבֵּר: גישה ישירה לשם אינה מותרת מחוץ לאדם האוכף אנקפסולציה.

ברירת המחדל של שינוי גישה

כאשר לא צוין משנה גישה עבור שיטת מחלקה או חבר נתונים, נאמר שיש לו את משנה הגישה כברירת מחדל. זה אומר שרק כיתות בתוך אותה חבילה יכולים לגשת אליה.

Java
   class   Car     {      String     model  ;     // default access   }   public     class   Main     {          public     static     void     main  (  String  []     args  ){          Car     c     =     new     Car  ();      c  .  model     =     'Tesla'  ;     // accessible within the same package      System  .  out  .  println  (  c  .  model  );      }   }   

תְפוּקָה
Tesla  

הֶסבֵּר: לא ניתן לגשת לחברים עם גישת ברירת מחדל משיעורים בחבילה אחרת.

Geeks.java: מחלקת ברירת מחדל בתוך אותה חבילה

Java
   // default access modifier    package     p1  ;      // Class Geek is having    // Default access modifier    class   Geek      {         void     display  ()         {         System  .  out  .  println  (  'Hello World!'  );         }      }   

GeeksNew.java: מחלקת ברירת מחדל מחבילה אחרת (לניגוד)

C++
   // package with default modifier    package     p2  ;      import     p1  .  *  ;     // importing package p1   // This class is having    // default access modifier    class     GeekNew     {         public     static     void     main  (  String     args  [])     {             // Accessing class Geek from package p1       Geek     o     =     new     Geek  ();         o  .  display  ();         }      }   

הֶסבֵּר:  בדוגמה זו התוכנית תציג את שגיאת זמן הקומפילציה כאשר אנו מנסים לגשת למחלקת שינוי ברירת מחדל מחבילה אחרת.

שינוי גישה מוגנת

משנה הגישה המוגנת מצוין באמצעות מילת המפתח מוגנת. השיטות או חברי הנתונים שהוכרזו כמוגנים נגישים בתוך אותה חבילה או תת-מחלקות בחבילות שונות.

Java
   class   Vehicle     {      protected     int     speed  ;     // protected member   }   class   Bike     extends     Vehicle     {      void     setSpeed  (  int     s  )      {      speed     =     s  ;     // accessible in subclass      }      int     getSpeed  ()      {      return     speed  ;     // accessible in subclass      }   }   public     class   Main     {      public     static     void     main  (  String  []     args  ){          Bike     b     =     new     Bike  ();      b  .  setSpeed  (  100  );      System  .  out  .  println  (  'Access via subclass method: '      +     b  .  getSpeed  ());      Vehicle     v     =     new     Vehicle  ();      System  .  out  .  println  (  v  .  speed  );      }   }   

תְפוּקָה
Access via subclass method: 100 0  

הֶסבֵּר: המהירות נגישה באמצעות שיטות תת-מחלקות ומחלקות אחרות באותה חבילה, אך גישה ישירה מחבילה אחרת (שאיננה תת-מחלקה) תיכשל.

משנה גישה לציבור

משנה הגישה הציבורית מצוין באמצעות מילת המפתח ציבורית. חברי הציבור נגישים מכל מקום בתוכנית. אין הגבלה על היקף חברי הנתונים הציבוריים.

Java
   class   MathUtils     {             public     static     int     add  (  int     a       int     b  )     {      return     a     +     b  ;      }   }   public     class   Main     {          public     static     void     main  (  String  []     args  )     {          System  .  out  .  println  (  MathUtils  .  add  (  5       10  ));     // accessible anywhere      }   }   

תְפוּקָה
15  

הֶסבֵּר: add() נגיש באופן גלובלי עקב השינוי הציבורי.

לא ניתן להכריז על מחלקות או ממשקים ברמה העליונה כפרטיים מכיוון שפרטי פירושו 'נראה רק בתוך המחלקה המקיפה'.

טבלת השוואה של משנה גישה ב-Java

אותו_מחלקהAccess-Modifier

מתי להשתמש בכל שינוי גישה בפרויקטים בעולם האמיתי

  • פְּרָטִי: הרעיון צריך להשתמש בגישה מגבילה ככל האפשר ולכן יש להשתמש בפרטי ככל האפשר.
  • בְּרִירַת מֶחדָל (Package-Private): משמש לעתים קרובות בכלי שירות בהיקף חבילה או בשיעורי עוזר.
  • מוּגָן: משמש בדרך כלל בעיצובים מבוססי ירושה כמו הרחבות מסגרת.
  • פּוּמְבֵּי : זה משמש עבור מחלקות שירות של נקודות קצה API או שיטות שירות המשותפות על פני חלקים שונים של יישום.


צור חידון