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

상속 정의

공부/C#2016. 5. 6. 13:32

    //class MyClass2 : public MyClass1 //c++ 상속

    class MyClass2 : MyClass1   //무조건 public 상속만 가능하며 하나만 가능하다.

    {

    }


//제가 하는 포스팅은 보통 c++과 c# 차이에 대한 것만 적지 개념을 따로 정리하지 않습니다.


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

상속 가상 함수 선언  (0) 2016.05.08
상속 protected 접근  (0) 2016.05.08
class 변수 선언 - get, set  (0) 2016.05.06
Console Color  (0) 2016.05.04
시간 측정 Stopwatch  (0) 2016.05.04


        //아래는 c++의 사용 방법

        //  int x = 0;  //안붙이면 private:

        //public:

        //  int i = 1;

        //  int j = 2;


        //C#에서는 각각 붙여줘야 함

        public int i = 1;

        protected int j = 2;

        int k = 3; // 안붙이면 private

        private int l = 4;

        /*

        //c++에서는 아래와 같이 별도로 Get함수와 Set함수를 만들었었다.

        public int GetK()

        {

            return k;

        }

        public void SetK(int num)

        {

            k = num;

        }

        */

        public int L    //변수가 소문자면 get/set을 위한 함수는 보통 같은 글자의 대문자로 사용한다.

        {

            //겟셋

            get { return this.l; }

            set    //값을 넣을 때 별도의 처리가 가능하다

            { 

                if(value < 0)

                {

                    this.l = 0;

                }

                else if(value > 100)

                {

                    this.l = 100;

                }

                else

                {

                    this.l = value;    //value는 별도로 지정하는 것이 아니라 값을 자동으로 받아온다.

                }

            }

            /*

            //set이 없으면 읽기 전용

            get { return this.l; }

            // set { this.l = value; }

            */

        }



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

상속 protected 접근  (0) 2016.05.08
상속 정의  (0) 2016.05.06
Console Color  (0) 2016.05.04
시간 측정 Stopwatch  (0) 2016.05.04
반복문  (0) 2016.05.04