• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (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.:54
    728x90

    다형성(Polymorphism)은 객체 지향 프로그래밍에서 코드의 유연성과 재사용성을 극대화하는 핵심 원리입니다. "많은 형태를 가질 수 있는 능력"을 의미하는 다형성은 동일한 인터페이스나 메서드 호출이 서로 다른 객체 타입에 대해 다른 동작을 할 수 있게 해줍니다. 이로 인해, 프로그래머는 더 유연하고 확장 가능한 코드를 작성할 수 있습니다.

    다형성의 구현: 메서드 오버라이딩

    C#에서 다형성은 주로 메서드 오버라이딩(Method Overriding)을 통해 구현됩니다. 메서드 오버라이딩은 상속 관계에 있는 클래스에서, 부모 클래스에 정의된 메서드를 자식 클래스에서 재정의하는 방식으로 이루어집니다.

    Virtual 메서드

    부모 클래스에서 메서드를 정의할 때 virtual 키워드를 사용하면, 해당 메서드는 자식 클래스에서 오버라이드될 수 있습니다. virtual 메서드는 기본적인 동작을 제공하며, 자식 클래스에서 필요에 따라 이 동작을 변경할 수 있는 옵션을 제공합니다.

    Override 메서드

    자식 클래스에서는 부모 클래스의 virtual 메서드를 override 키워드와 함께 재정의할 수 있습니다. 이를 통해 부모 클래스에서 정의된 동작을 자식 클래스에 맞게 변경하며, 다형성을 실현할 수 있습니다.

    다형성의 장점

    코드의 유연성

    다형성을 사용하면 한 인터페이스로 다양한 객체의 메서드를 호출할 수 있습니다. 이는 코드의 유연성을 증가시키며, 다양한 상황에 대응할 수 있는 코드를 작성할 수 있게 해줍니다.

    재사용성 및 확장성

    다형성은 기존 코드를 수정하지 않고도 새로운 클래스를 추가하거나 기존 클래스를 확장할 수 있는 방법을 제공합니다. 이는 코드의 재사용성과 확장성을 높여줍니다.

    유지 보수성

    다형성은 코드 중복을 줄이고, 변경에 대한 영향을 최소화합니다. 이로 인해 유지 보수성이 향상되며, 더 깨끗하고 관리하기 쉬운 코드를 유지할 수 있습니다.

    예제: 동물의 소리를 다루는 클래스

    using System;
    
    class Program
    {
        class Animal
        {
            public virtual void animalSound()
            {
                Console.WriteLine("The animal makes a sound");
            }
        }
    
        class Pig : Animal
        {
            public override void animalSound()
            {
                Console.WriteLine("The pig says: wee wee");
            }
        }
    
        class Dog : Animal
        {
            public override void animalSound()
            {
                Console.WriteLine("The dog says: bow wow");
            }
        }
        static void Main(string[] args)
        {
            Pig pig = new Pig();
            pig.animalSound(); // 출력 : The pig says: wee wee
    
            Dog dog = new Dog();
            dog.animalSound(); // 출력 : The dog says: bow wow
        }
    }

    이 예제에서는 Animal 클래스에 정의된 animalSound 메서드를 Pig와 Dog 클래스에서 각각 다르게 오버라이드하여 다형성을 구현하고 있습니다. 이러한 구조를 통해 다양한 타입의 동물 객체가 animalSound 메서드를 통해 고유의 소리를 낼 수 있습니다.

    결론

    다형성은 프로그램을 더 유연하고 확장 가능하게 만들며, 개발자가 다양한 시나리오에 대응할 수 있는 강력한 코드를 작성할 수 있게 해줍니다. 메서드 오버라이딩을 통한 다형성 구현은 객체 지향 프로그래밍의 핵심 중 하나로, 코드의 재사용성과 유지 보수성을 대폭 향상시킵니다.

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

    티스토리툴바