» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
בקרת גישה ב‑++C
דף ראשי  מתחילים  בקרת גישה  בקרת גישה ב‑++C גרסה להדפסה

בקרת גישה ב‑++C

 

ב‑++C ניתן לציין כל חבר אינדיבידואלי במחלקה כ‑private, public או protected.
חבר המצוין כ‑
private יהיה נגיש רק לחברים אחרים של אותה המחלקה.
זה המקרה המחמיר ביותר מבין השלושה.

שים לב, שחבר מסוג private של מחלקת בסיס אינו נגיש לחברים של מחלקה יורשת,

ללא קשר לבקרת הגישה בממשק ההורשה (ראה בהמשך).

 

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

 

protected נכנס לתמונה רק כאשר מדובר בהורשה. אפשר לומר בפשטות, שחבר מסוג protected ייחשב כ‑public עבור חברים ממחלקות אשר נגזרו מתוך אותה מחלקה, ואילו במקרים אחרים ייחשב כ‑private (בכפוף לשימוש בבקרת גישה נוספת בממשק ההורשה, וראה בהמשך.)

 

בקרת גישה בממשק ההורשה

 

הפן הראשון של בקרת גישה ב‑++C, כפי שתואר למעלה, יש לו מקבילה גם ב‑Java .

לבקרת גישה ב‑++C יש גם פן אחר, שלגביו אין מקבילה ב‑Java .

 

כל אימת שמחלקה יורשת ממחלקה אחרת, מיתווספת רמה שנייה של בקרת גישה בממשק ההורשה, תוך שימוש באותן מילות המפתח: protected, private, public.

 

נתחיל את הדיון בשתי טענות:

 

·       בקרת הגישה, אשר מיושמת על חבר כלשהו במחלקה, אינה יכולה להיות מחמירה פחות בממשק ההורשה.

·       בקרת גישה בממשק ההורשה תעלה את דרגת ההחמרה לגבי הגישה עבור חבר כלשהו,

     עד לדרגה המצוינת בממשק ההורשה אם זו איננה כבר בדרגה הנ"ל או מעליה.

 

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

 

בקרת הגישה private בממשק ההורשה תגרום לכך, שכל החברים במחלקה המקורית יהיו private במחלקה הנגזרת.

 

בקרת הגישה protected בממשק ההורשה תגרום לכך, שכל החברים מסוג public במחלקה המקורית יהיו protected במחלקה הנגזרת, וכל החברים מסוג protected במחלקה המקורית יהיו private במחלקה הנגזרת. חברים מסוג private במחלקה המקורית יישארו private גם במחלקה הנגזרת, ולא יהיו נגישים לחברים שלה.

 

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

 

פונקציות friend

 

ישנו היבט נוסף של בקרת הגישה ב‑++C שראוי להזכיר. ניתן לציין פונקציה כ‑friend של מחלקה, ובמקרה כזה תהיה לפונקציה גישה ישירה לכל החברים מסוג private ו‑protected של אותה מחלקה. הפונקציה עשויה להיות פונקציה (מתודה) חברה במחלקה אחרת, או פשוט פונקציה עצמאית (פונקציות עצמאיות אינן נתמכות ב‑Java). ב‑Java לא קיימת מקבילה ישירה לפונקציות friend,
כמו אלה הקיימות ב‑++
C .

 

 05-01-04 / 17:38  נוצר ע"י רונית רייכמן  בתאריך 
 private&public - הקודםהבא - שאלות סיכום 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 8