- משנה גישה פרטית
- תפקיד של קונסטרוקטור פרטי
- משנה גישה כברירת מחדל
- משנה גישה מוגנת
- משנה גישה ציבורית
- משנה גישה עם ביטול שיטה
ישנם שני סוגים של שינויים ב-Java: משנה גישה ו משנים ללא גישה .
תקני הגישה ב-Java מציינים את הנגישות או ההיקף של שדה, שיטה, בנאי או מחלקה. אנו יכולים לשנות את רמת הגישה של שדות, בנאים, שיטות ומחלקה על ידי החלת משנה הגישה עליה.
ישנם ארבעה סוגים של משנה גישה ל-Java:
ישנם משנים רבים שאינם בעלי גישה, כגון סטטי, מופשט, מסונכרן, מקורי, נדיף, חולף וכו'. כאן, אנו הולכים ללמוד את משנות הגישה בלבד.
הבנת משתני גישה ל-Java
בואו נבין את משנה הגישה ב-Java על ידי טבלה פשוטה.
משנה גישה | בתוך הכיתה | בתוך החבילה | חבילה חיצונית לפי תת-מחלקה בלבד | חבילה חיצונית |
---|---|---|---|---|
פְּרָטִי | ו | נ | נ | נ |
בְּרִירַת מֶחדָל | ו | ו | נ | נ |
מוּגָן | ו | ו | ו | נ |
פּוּמְבֵּי | ו | ו | ו | ו |
1) פרטי
ניתן לגשת לשינוי הגישה הפרטית רק בתוך המחלקה.
הורד את נגן המדיה של YouTube vlc
דוגמה פשוטה לשינוי גישה פרטית
בדוגמה זו, יצרנו שתי מחלקות A ו-Simple. מחלקה מכילה חבר נתונים פרטיים ושיטה פרטית. אנחנו ניגשים לחברים הפרטיים האלה מחוץ לכיתה, אז יש שגיאה בזמן הידור.
class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } }
תפקיד של קבלן פרטי
אם אתה הופך בנאי מחלקה לפרטי, לא תוכל ליצור את המופע של המחלקה מחוץ למחלקה. לדוגמה:
class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } }
הערה: מחלקה אינה יכולה להיות פרטית או מוגנת מלבד מחלקה מקוננת.
2) ברירת מחדל
אם אינך משתמש באף משנה, הוא יטופל כאל בְּרִירַת מֶחדָל כברירת מחדל. ניתן לגשת לשינוי ברירת המחדל רק בתוך החבילה. לא ניתן לגשת אליו מחוץ לחבילה. זה מספק יותר נגישות מאשר פרטי. אבל, זה יותר מגביל מאשר מוגן, וציבורי.
אם-אחרת java
דוגמה לשינוי גישה המוגדר כברירת מחדל
בדוגמה זו, יצרנו שתי חבילות pack ו-mypack. אנו ניגשים למחלקה A מחוץ לחבילה שלה, מכיוון שהמחלקה אינה ציבורית, ולכן לא ניתן לגשת אליה מחוץ לחבילה.
//save by A.java package pack; class A{ void msg(){System.out.println('Hello');} }
//save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } }
בדוגמה שלמעלה, ההיקף של מחלקה A והשיטה שלה msg() היא ברירת מחדל כך שלא ניתן לגשת אליה מחוץ לחבילה.
3) מוגן
ה משנה גישה מוגנת נגיש בתוך החבילה ומחוץ לחבילה אך באמצעות ירושה בלבד.
ניתן להחיל את שינוי הגישה המוגנת על חבר הנתונים, השיטה והקונסטרוקטור. לא ניתן ליישם את זה בכיתה.
הוא מספק נגישות רבה יותר מאשר משנה ברירת המחדל.
דוגמה לשינוי גישה מוגנת
סוגי למידת מכונה
בדוגמה זו, יצרנו את שתי החבילות pack ואת mypack. חבילת A class of pack היא ציבורית, ולכן ניתן לגשת אליה מחוץ לחבילה. אבל שיטת msg של החבילה הזו מוכרזת כמוגנת, כך שניתן לגשת אליה מחוץ למחלקה רק דרך ירושה.
//save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} }
//save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } }
Output:Hello
4) ציבורי
ה משנה גישה ציבורית נגיש בכל מקום. יש לו את ההיקף הרחב ביותר מבין כל שאר השינויים.
דוגמה לשינוי גישה ציבורית
//save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} }
//save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } }
Output:Hello
משנה גישה ל-Java עם עקיפה של שיטה
אם אתה עוקף שיטה כלשהי, שיטה שנדרסה (כלומר מוצהרת בתת-מחלקה) לא חייבת להיות מגבילה יותר.
class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } }
שינוי ברירת המחדל מגביל יותר מאשר מוגן. לכן יש שגיאה בזמן הידור.