산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 상속과 다형성 마스터하기: 실전 코드 예제

C#에서 상속(Inheritance)이란?

상속은 C# 객체 지향 설계의 초석입니다. 자식 클래스가 부모 클래스의 필드와 메서드를 자동으로 물려받으면서도 그 동작을 재정의하거나 확장할 수 있게 합니다. 이는 코드 재사용을 촉진하고 유지보수를 단순화하며 명확한 계층을 확립합니다.

C# 상속 예제

아래는 상속 구현과 protected 멤버 사용을 보여주는 단계별 시연입니다.

1단계 – 기본 클래스 수정

Tutorial.cs를 열고 Tutorial 클래스의 핵심 필드를 protected로 변경합니다:

C# 상속과 다형성 마스터하기: 실전 코드 예제

protected를 사용하면 파생 클래스만 이 필드에 직접 접근할 수 있습니다.

2단계 – 파생 클래스 생성

기본 클래스 정의 뒤에 다음 코드를 Tutorial.cs에 추가합니다:

C# 상속과 다형성 마스터하기: 실전 코드 예제

설명:

  1. 콜론(:) 문법으로 Guru99Tutorial을 Tutorial의 자식으로 선언
  2. RenameTutorial 메서드 추가하여 TutorialName에 새 값 할당
  3. TutorialName이 protected이므로 Guru99Tutorial에서 명시적 선언 없이 접근 가능

3단계 – Program.cs에서 파생 클래스 사용

Program.cs 내용을 다음으로 교체합니다:

C# 상속과 다형성 마스터하기: 실전 코드 예제

using System; 
namespace DemoApplication { 
    public class Tutorial { 
        protected int TutorialID; 
        protected string TutorialName; 
        public void SetTutorial(int pID, string pName) { 
            TutorialID = pID; 
            TutorialName = pName; 
        } 
        public string GetTutorial() { 
            return TutorialName; 
        } 
    } 
    public class Guru99Tutorial : Tutorial { 
        public void RenameTutorial(string pNewName) { 
            TutorialName = pNewName; 
        } 
        static void Main(string[] args) { 
            Guru99Tutorial pTutor = new Guru99Tutorial(); 
            pTutor.RenameTutorial(".Net by Guru99"); 
            Console.WriteLine(pTutor.GetTutorial()); 
            Console.ReadKey(); 
        } 
    } 
}

설명:

  1. 프로그램이 기본 Tutorial이 아닌 Guru99Tutorial을 인스턴스화
  2. RenameTutorial 호출로 제목 변경
  3. GetTutorial이 기본 클래스에 정의되어 있지만 파생 인스턴스가 직접 호출 가능

이 코드 실행 결과:

C# 상속과 다형성 마스터하기: 실전 코드 예제

C#에서 다형성(Polymorphism)이란?

다형성은 단일 인터페이스가 서로 다른 하위 형태를 나타내게 합니다. C#에서는 주로 메서드 오버로딩이나 오버라이딩으로 나타나며, 동일한 메서드 이름이 매개변수나 컨텍스트에 따라 다양한 작업을 수행하게 합니다.

C# 다형성 예제

동일 클래스 내 메서드 오버로딩을 시연합니다.

1단계 – 기본 클래스 업데이트

Tutorial.cs를 다음처럼 수정합니다:

C# 상속과 다형성 마스터하기: 실전 코드 예제

주요 변경사항:

  1. SetTutorial 메서드에 두 오버로드 추가 – int와 string을 받는 것과 string만 받는 것
  2. 두 오버로드 모두 해당 필드에 값 할당

2단계 – Program.cs에서 테스트

Program.cs를 다음 코드로 교체합니다:

using System; 
namespace DemoApplication { 
    class Tutorial { 
        public int TutorialID; 
        public string TutorialName; 
        public void SetTutorial(int pID, string pName) { 
            TutorialID = pID; 
            TutorialName = pName; 
        } 
        public void SetTutorial(string pName) { 
            TutorialName = pName; 
        } 
        public string GetTutorial() { 
            return TutorialName; 
        } 
        static void Main(string[] args) { 
            Tutorial pTutor = new Tutorial(); 
            pTutor.SetTutorial(1, "First Tutorial"); 
            Console.WriteLine(pTutor.GetTutorial()); 
            pTutor.SetTutorial("Second Tutorial"); 
            Console.WriteLine(pTutor.GetTutorial()); 
            Console.ReadKey(); 
        } 
    } 
}

설명:

  1. 첫 호출은 id와 name을 두 매개변수 오버로드에 전달
  2. 두 번째 호출은 name만 전달하여 단일 매개변수 오버로드 호출

콘솔 출력:

C# 상속과 다형성 마스터하기: 실전 코드 예제

고급 시나리오를 위해 GetTutorialID 메서드를 추가하여 ID를 별도로 조회할 수 있습니다.

요약

C 언어

  1. C# 식, 문, 블록: 개념과 실전 예제로 완벽 이해
  2. C# 클래스와 객체: 견고한 OOP를 위한 기초 다지기
  3. C# 추상 클래스와 추상 메서드: 실전 가이드
  4. C# partial 클래스와 partial 메서드 이해하기
  5. C# sealed 클래스와 메서드: 상속/오버라이딩 제한으로 코드 안전성·성능 높이기
  6. C++ 함수 완전 정복: 실전 코드 예제로 이해하기
  7. C++ 구조체 vs 클래스: 핵심 차이, 문법, 최적 사용 사례
  8. While vs Do-While 루프: 실전 예제로 명확히 이해하기
  9. 파이썬 type()과 isinstance() 이해하기: 실전 예제
  10. C# 프로그램 구조 이해: 핵심 구성 요소와 Hello World 예제