[C# 객체지향] 상속_형 변환

eunjin lee·2022년 6월 18일
0

C# 9.0 프로그래밍

목록 보기
3/50
  • 자식_클래스 : 부모_클래스
  • 상속을 이용하면 자식 클래스에서 부모 클래스의 기능을 물려받을 수 있다.
  • 계층 상속은 가능하지만, 다중 상속은 가능하지 않다.


  1. 암시적 형 변환
  • ✍ 샘플 코드

      class Program
      {
          static void Main(string[] args)
          {
              Cat c = new Cat();
              c.Cry();
              c.Groom();
    
              Animal a = c; //암시적 형 변환
              a.Cry();
              //a.Groom(); 컴파일 에러
    
          }
      }
    
      class Cat : Animal
      {
          public void Groom()
          {
              Console.WriteLine("Grooming...");
          }
      }
    
      class Animal
      {
          public void Cry()
          {
              Console.WriteLine("Cry~");
          }
      }
    	
  • ✅ 결과

    Cry~
    Grooming...
    Cry~
    • 자식 인스턴스를 부모 타입으로 암시적으로 형 변환할 수 있다.
    • 부모 타입의 자식 인스턴스는 부모의 기능만 쓸 수 있다.



2. 명시적 형 변환

  • ✍ 샘플 코드
      class Program
      {
          static void Main(string[] args)
          {
              Animal a = new Animal();
              Cat c = (Cat)a; //명시적 형 변환
          }
      }
  • ✅ 결과
    'Pjt.Animal' 형식 개체를 'Pjt.Cat' 형식으로 캐스팅할 수 없습니다.
    • 부모 인스턴스를 자식 타입으로 명시적으로 형 변환은 가능하다. (컴파일은 가능하다.)
    • 그러나, 실행 시 오류가 발생하는데, 부모 인스턴스는 자식의 기능에 대한 정보가 없기 때문이다.
  • ✍ 샘플 코드
      class Program
      {
          static void Main(string[] args)
          {
              Cat c = new Cat();
              Animal a = c; // 암시적 형 변환 후,
              Cat cc = (Cat)a;// 명시적 형 변환
              cc.Cry();
              cc.Groom();
          }
      }
  • ✅ 결과
    Cry~
    Grooming...

    자식 인스턴스를 부모 타입으로 형 변환했다가 다시 자식 타입으로 형 변환하면, 해당 인스턴스는 부모의 기능과 자식의 기능을 쓸 수 있다.

0개의 댓글