www.doronamir.com

E-mail: doron@doronamir.com

 

 

מה זה מציין גישה - מוגן ?  -  Protected

 

Protected: מציין גישה (Access Modifier) = הרשאה אשר מאפשרת לגשת אל

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

 

כאשר אנו מגדירים מחלקה (class ) אנו מסתירים או חושפים או חושפים למחצה את חברי המחלקה (  Encapsulation )

חברי המחלקה הכוונה למשתנים , מתודות , מאפיינים וכו' המוגדרים במחלקה

 

כאשר אנו מגדרים משתנה כ- Private לא ניתן לראותו מחוץ למחלקה ומשתנה זה חסום לגישה ישירה

כאשר אנו מגדרים משתנה כ- Public הוא חשוף לכל ניתן לגשת אליו בצורה ישירה גם ממחלקות יורשות וגם ממחלקות

הנמצאות ב * Assemblies שונים.

כאשר אנו מגדרים משתנה כ- Protected הוא חשוף למחצה כלומר לא ניתן לגשת אליו

ממחלקות שאינן יורשות מהמחלקה שבה הוגדר המשתנה .

כאשר מגדירים משתנה כ- Internal הוא חשוף לכל המחלקות שנמצאות ב Assembly הנוכחי

 

*(Assembly = יחידה לוגית המאגדת קובץ אחד או יותר תחת קבוצה לוגית אחת – יחידת NET. אטומית )

 

בדוגמה הנ"ל הוגדרה מחלקה  בשם Father עם משתנה Private , Public ו- Protected

המחלקה  Child יורשת מהמחלקה Father וניתן לראות כי במתודה PrintLastName

המוגדרת במחלקה Child אין הגדרה של המשתנה LastName אלא פנייה ישירה

כלומר המחלקה היורשת מכירה במשתנה כי הוא חשוף כלפי מחלקות יורשות לעומת מחלקות

שאינן יורשות כגון המחלקה Person שאינה יורשת מ Father שם אין גישה למשתנה LastName

 

 

 

using System;

 

namespace Protected

{

    class Father

    {

        private int Id=111;

        public string FirstName="Doron";

        protected string LastName="Amir";

       

 

        public  void PrintAllData()

        {

            Console.WriteLine("id={0}\n,First Name={1},Last Name={2}",Id,FirstName,LastName);

        }

    }

 

    class Child:Father

    {

       

        public  void PrintLastName()

        {

            Console.WriteLine("First Name={0}",LastName);

        }

    }

 

//  class Person

//  {

//      public  void PrintLastName()

//      {

//          Console.WriteLine("First Name={0}",LastName);  // ERROR

//      }

// 

//  }

 

 

    class Class1

    {

   

        static void Main(string[] args)

        {

           

            Child C1 = new Child();

            C1.PrintLastName();

 

            Console.ReadLine();

        }

    }

}

 

 

 

תוצאה  :

First Name=Amir