מתודות של מחלקות נגזרות (Derived Class) אינן יכולות לגשת לחברים הפרטיים של המחלקה הבסיסית (Base class).
לעיתים יתכן ונרצה שמחלקות נגזרות כן יוכלו לגשת לרכיבים הפנימיים של המחלקות הבסיסיות.
הרשאת גישה Protected מאפשרת זאת.
עיקרון הסתרת המידע שריר וקיים גם בהורשה,
מתודות של מחלקה נגזרת (Derived Class) אינן יכולות לגשת לחברים הפרטיים של מחלקת הבסיס (Base class).
לעיתים יקרה ונרצה שמחלקות נגזרות כן יוכלו לגשת לרכיבים הפנימיים של המחלקות הבסיסיות, הסיבה יכולה להיות הרצון לשפר ביצועים.
במקום שמתודות במחלקה הנגזרת ייגשו ישירות לתכונות של המחלקה הבסיסית,
גישה ישירה במקום קריאה למתודות מהירה יותר וחוסכת משאבים.
#C כמו שאר השפות מונחות האובייקטים מגדירה הרשאת גישה (Access modifier) נוספת
על אלו שדנו בהן עד כה הנקראת protected .
חברי מחלקה המוגדרים כ- protected הנם חברים מוגנים.
הרשאת הגישה protected מאפשרת למחלקות הנגזרות גישה חופשית לחברים המוגנים (protected members) כאילו היו public , אולם חוסמת את הגישה לשאר מרכיבי האפליקציה , כאילו אותם חברים מוגנים הם פרטיים. לדוגמה (ProtectedSample):
מחלקת הבסיס (Base):
1 : classBase
2 : {
3 : privateintnum1;
4 : protectedintnum2;
5 : publicBase(intnum1,intnum2)
6 : {
7 : this.num1=num1;
8 : this.num2=num2;
9 : }
10 : publicvoidCalcAvg()
11 : {
12 : Console.WriteLine((num1+num2)/2);
13 : }
14 : publicintNum1
15 : {
16 : get
17 : {
18 : returnthis.num1;
19 : }
20 : set
21 : {
22 : this.num1=value;
23 : }
24 : }
25 : publicintNum2
26 : {
27 : get
28 : {
29 : returnthis.num2;
30 : }
31 : set
32 : {
33 : this.num2=value;
34 : }
35 : }
36 : }
בשורה 4 מוגדרת התכונה num1 כתכונה מוגנת (Protected), המשמעות היא שהיא חשופה למחלקות הנגזרות כאילו היתה תכונה ציבורית (Public).
הגישה לתכונה Num1 של מחלקת הבסיס חייבת להתבצע דרך המאפיין Num1 משום שהיא מוגנת.
הגישה לתכונה num2 יכולה להיות ישירות משום שהיא מוגנת ולכן יש למחלקה הנגזרת אפשרות לגשת אליה ישירות.
Main:
1 : classProgram
2 : {
3 : staticvoidMain(string[]args)
4 : {
5 : Derivedd=newDerived(2,4,6,8);
6 : d.CalcAvg();
7 : d.Num1=100;
8 : d.Num2=200;
9 : d.Num3=300;
10 : d.Num4=400;
11 : d.CalcAvg();
12 : }
13 : }
ב-Main נוכל לגשת לתכונה Num2 רק דרך המאפיין Num2, משום שהמחלקה Program אינה יורשת את מחלקת Base ולכן עבורה (ועבור שאר המחלקות) num1 חסומה כאילו הוגדרה private.
יתרונות של שימוש בתכונות מוגנות הם:
• גישה ישירה ללא שימוש במתודות מייעלת את ביצוע התוכנית.
• יכול לשפר את קריאות התוכנית.
• טבעי יותר, יישות יכולה לגשת לכל מרכיביה.