공부/C#

상속 protected 접근

미다손 2016. 5. 8. 20:20

//상속 protected 접근

    class Base

    {

        public bool publicVar = true;

        protected bool protectedVar = true;


        public void PublicWrite()

        {

            Console.WriteLine("PublicWrite : {0}", publicVar);

        }


        protected void ProtectedWrite()

        {

            Console.WriteLine("ProtectedWrite : {0}", protectedVar);

        }

    }


    class Derived : Base

    {

        public void PublicWrite2()

        {

            Console.WriteLine("PublicWrite : {0}", publicVar);

        }


        public void ProtectedWrite2()

        {

            ProtectedWrite(); //부모의 protected함수에 접근

            Console.WriteLine("ProtectedWrite : {0}", protectedVar);

        }

    }

    

    class Program

    {

        static void Main(string[] args)

        {

            Base baseObj = new Base();

            Derived derived = new Derived();


            Console.WriteLine("부모 public 접근 : {0}", baseObj.publicVar);

            //Console.WriteLine("부모 protected 접근 : {0}", baseObj.protectedVar); // 에러

            Console.WriteLine("자식 public 접근 : {0}", derived.publicVar);

            //Console.WriteLine("자식 protected 접근 : {0}", derived.protectedVar); // 에러

            baseObj.PublicWrite();

            //baseObj.ProtectedWrite();     //에러

            derived.PublicWrite();    //자식으로 선언한 변수로 부모 함수(public) 접근 

            //derived.ProtectedWrite();     //에러

            derived.PublicWrite2();

            derived.ProtectedWrite2();

        }

    }


//================================================================

//protected변수, 함수는 자식만 직접 접근이 가능함을 기억하자. (c/c++/java 공통적인 기본 사항이다.)

//다른 class에서 사용하고자 한다면 자식에 public으로 접근 가능하게 우회하여야 한다.

//================================================================