midas+son의 크리에이티브(creative) 이야기

//상속 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으로 접근 가능하게 우회하여야 한다.

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

'공부 > C#' 카테고리의 다른 글

함수 주석 ///  (0) 2016.05.08
상속 가상 함수 선언  (0) 2016.05.08
상속 정의  (0) 2016.05.06
class 변수 선언 - get, set  (0) 2016.05.06
Console Color  (0) 2016.05.04