Beispiel #1
0
        static void Main(string[] args)
        {
            Base _base = new Base();

            _base.Print();

            Base aa = new AA(); // new AA로 했지만 Base로 받은것이다.

            aa.Print();

            if (aa is BB)
            {
                Console.WriteLine("aa는 BB의 객체 입니다.");
            }
            else if (aa is AA)
            {
                Console.WriteLine("aa는 AA의 객체 입니다.");
            }
            if (aa is Base)
            {
                Console.WriteLine("aa는 Base의 객체입니다.");
            }

            Base bb = new BB();

            //BB copyBB = (BB)bb; // 예외 상황이 발생할 수 있기 때문에 as키워드 사용하는게 좋음
            BB copyBB = bb as BB; // 강제 형 변환

            if (null != copyBB)
            {
                Console.WriteLine("--------------------");
                Console.WriteLine("copyBB는 BB객체를 형식 변환");
                copyBB.PrintB();
            }
            //AA copyAA = (AA)bb; //예외 상황 발생
            AA copyAA = bb as AA;

            if (null == copyAA)
            {
                Console.WriteLine("---------------------");
                Console.WriteLine("copyAA는 AA객체가 아니므로 null!!");

                copyAA = new AA();
                copyAA.Print();
                copyAA.PrintA();

                AA asAA = copyAA as AA; // 강제 형 변환
                asAA.PrintA();
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Base _base = new Base();

            _base.Print();

            Base aa = new AA();

            aa.Print(); // PrintA 접근 불가

            if (aa is BB)
            {
                Console.WriteLine("aa는 BB의 객체입니다");
            }
            else if (aa is AA)
            {
                Console.WriteLine("aa는 AA의 객체입니다.");
            }

            Base bb = new BB();

            // BB copyBB = (BB)bb;  -> 캐스팅도 되기는 하는데 잘못된 캐스팅 연산을 하면 문제가 발생
            BB copyBB = bb as BB;   // 강제 형 변환

            if (null != copyBB)
            {
                Console.WriteLine("-----------------------------");
                Console.WriteLine("copyBB는 BB객체를 형식 변환!!");
                copyBB.PrintB();
            }

            // AA copyAA = (AA)bb;  -> 예외상황 발생
            AA copyAA = bb as AA;

            if (null == copyAA) // 정상적으로 캐스팅 연산이 되지 않았을 때
            {
                Console.WriteLine("-----------------------------");
                Console.WriteLine("copyAA는 AA객체가 아니므로 null!!");

                copyAA = new AA();
                copyAA.Print();
                // copyAA.PrintA(); -> 원하는 값이 나오지 않음 (=> 다형성으로 가능)

                AA asAA = copyAA as AA; // 강제 형변환
                asAA.PrintA();
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            Base _base = new Base();

            _base.Print();

            Base aa = new AA();

            aa.Print();

            if (aa is BB)
            {
                Console.WriteLine("aa는 BB의 객체입니다.");
            }
            else if (aa is AA)
            {
                Console.WriteLine("aa는 AA의 객체입니다.");
            }

            Base bb = new BB();

            BB copyBB = bb as BB;   // 강제 형 변환

            // BB copyBB = (BB)bb;  // 가능

            if (null != copyBB)
            {
                Console.WriteLine("-----------------------");
                Console.WriteLine("copyBB는 BB 객체를 형식 변환!!");
                copyBB.PrintB();
            }

            AA copyAA = bb as AA;

            if (null == copyAA)
            {
                Console.WriteLine("----------------------");
                Console.WriteLine("copyAA는 AA 객체가 아니므로 null!!");

                copyAA = new AA();
                copyAA.Print();
                // copyAA.PrintA()      // 가능하지만 원하는 값이 출력 안된다

                AA asAA = copyAA as AA;     // 강제 형 변환
                asAA.PrintA();
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            Base _base = new Base();

            _base.Print();

            Base aa = new AA();

            aa.Print();

            if (aa is BB)
            {
                Console.WriteLine("aa는 BB의 객체 입니다");
            }
            else if (aa is AA)
            {
                Console.WriteLine("aa는 AA의 객체 입니다");
            }

            Base bb = new BB();

            BB copyBB = bb as BB; //강제 형 변환

            if (null != copyBB)
            {
                Console.WriteLine("------------------------------------");
                Console.WriteLine("copyBB는 BB객체를 형식 변환!!");
                copyBB.PrintB();
            }

            Base copyAA = bb as AA;

            if (null == copyAA)
            {
                Console.WriteLine("------------------------------------");
                Console.WriteLine("copyAA는 AA객체가 아니므로 null!!");

                copyAA = new AA();
                copyAA.Print();
                //copyAA.PrintA(); //오류(=> 다형성으로 가능)

                AA asAA = copyAA as AA; //강제 형 변환
                asAA.PrintA();
            }
        }