• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • C# 프로그래밍의 기초 : 클래스 형식 변환
    2024년 03월 02일
    • 유니얼
    • 작성자
    • 2024.03.02.:38
    728x90

    클래스 형식 변환은 상속 관계에 있는 클래스 간의 형 변환을 의미하며, 객체 지향 프로그래밍에서 중요한 역할을 합니다. 이 변환을 통해 다형성(Polymorphism)을 실현하고, 코드의 유연성과 재사용성을 높일 수 있습니다. 주로 업캐스팅(Upcasting)과 다운캐스팅(Downcasting)이라는 두 가지 변환이 있습니다.

    업캐스팅(Upcasting)

    업캐스팅은 서브 클래스의 인스턴스를 슈퍼 클래스 타입으로 변환하는 과정입니다. 이 변환은 항상 안전하며 자동으로 이루어집니다. 업캐스팅을 사용하면 서브 클래스 객체를 슈퍼 클래스의 참조로 사용할 수 있으며, 슈퍼 클래스에서 정의된 메서드에 접근할 수 있습니다.

    업캐스팅의 장점:

    • 다형성 지원: 서로 다른 타입의 객체를 같은 슈퍼 클래스 타입으로 관리할 수 있어, 코드의 유연성을 높입니다.
    • 코드 재사용성 향상: 슈퍼 클래스의 메서드를 재사용하면서, 필요에 따라 서브 클래스에서 메서드를 오버라이드할 수 있습니다.

    다운캐스팅(Downcasting)

    다운캐스팅은 업캐스팅의 반대 과정으로, 슈퍼 클래스 타입의 객체를 서브 클래스 타입으로 변환하는 것을 말합니다. 다운캐스팅은 명시적으로 형 변환 연산자를 사용해야 하며, 변환하려는 타입이 실제 객체의 타입과 호환되지 않으면 런타임 오류가 발생할 수 있습니다.

    다운캐스팅 시 주의사항:

    • 타입 호환성 검사: 다운캐스팅하기 전에, is 연산자나 as 연산자를 사용해 변환 가능성을 확인해야 합니다.
    • 런타임 오류의 위험: 타입 호환성이 없는 경우, 명시적 변환 시 런타임 오류가 발생할 수 있습니다.

    예제 코드

    using System;
    
    class Program
    {
        class Animal
        {
            public void Eat()
            {
                Console.WriteLine("Animal is eating.");
            }
        }
    
        class Dog : Animal
        {
            public void Bark()
            {
                Console.WriteLine("Dog is barking.");
            }
        }
    
        static void Main(string[] args)
        {
            // 업캐스팅 예시: Dog 객체를 Animal 타입으로 변환
            Dog dog = new Dog();
            Animal animal = dog; // 업캐스팅, 자동으로 이루어짐
            animal.Eat(); // 상속받은 메서드 호출 가능
    
            // 다운캐스팅 예시: Animal 타입을 Dog 타입으로 변환
            Animal animal2 = new Dog();
            Dog dog2 = (Dog)animal2; // 다운캐스팅, 명시적 형 변환 필요
            dog2.Bark(); // Dog 클래스의 메서드 호출 가능
        }
    }

    결론

    클래스 형식 변환은 객체 지향 프로그래밍에서 다형성을 구현하는 데 중요한 메커니즘입니다. 업캐스팅과 다운캐스팅을 이해하고 올바르게 사용함으로써, 코드의 유연성과 재사용성을 크게 향상시킬 수 있습니다. 단, 다운캐스팅 시에는 타입 호환성을 항상 주의 깊게 검사해야 합니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바