logo

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

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

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

Access-Modifiers-in-Java-1' title=גישה לשינויים ב-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

אותו_מחלקה' loading='lazy' title=Access-Modifier

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

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


צור חידון