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(); } }
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(); } }
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(); } }
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(); } }