Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 단일 상속(Single Inheritance) 예제로 배우는 상속의 기본

상속(Inheritance)은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 기존 클래스의 멤버를 새로운 클래스가 물려받아 재사용할 수 있게 해줍니다. 이번 글에서는 그중 가장 기본적인 형태인 단일 상속(Single Inheritance)을 C# 코드 예제를 통해 살펴보겠습니다.

단일 상속이란 하나의 파생 클래스(자식 클래스)가 오직 하나의 기본 클래스(부모 클래스)만을 상속받는 구조를 의미합니다.

기본 클래스(Father) 선언

먼저 상속을 해주는 기본 클래스인 Father를 아래와 같이 선언합니다. 이 클래스에는 Display() 메서드 하나가 정의되어 있습니다.

class Father {
    public void Display() {
        Console.WriteLine("Display");
    }
}

파생 클래스(Son) 선언

다음으로 Father 클래스를 상속받는 파생 클래스 Son을 선언합니다. 콜론(:) 기호를 사용하여 상속 관계를 표현하며, Son 클래스는 부모의 모든 public 멤버를 물려받습니다.

class Son : Father {
    public void DisplayOne() {
        Console.WriteLine("DisplayOne");
    }
}

전체 예제 코드

아래는 C#에서 단일 상속을 구현한 완전한 예제입니다. Main 메서드 안에서 각 클래스의 객체를 생성하고 메서드를 호출하는 방식으로 동작을 확인할 수 있습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyAplication {
    class Demo {
        static void Main(string[] args) {
            // Father 클래스 객체 생성 및 호출
            Father f = new Father();
            f.Display();

            // Son 클래스 객체 생성 및 호출
            Son s = new Son();
            s.Display();      // 부모 클래스의 메서드 호출 가능
            s.DisplayOne();   // 자신의 메서드 호출

            Console.ReadKey();
        }

        class Father {
            public void Display() {
                Console.WriteLine("Display");
            }
        }

        class Son : Father {
            public void DisplayOne() {
                Console.WriteLine("DisplayOne");
            }
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Display
Display
DisplayOne

코드 설명

출력 결과를 보면 Son 객체인 s를 통해 부모 클래스의 Display() 메서드도 정상적으로 호출된 것을 알 수 있습니다. 이것이 바로 상속의 핵심입니다. 파생 클래스는 별도의 구현 없이도 기본 클래스의 접근 가능한(public) 멤버를 그대로 사용할 수 있습니다.

정리하면 다음과 같습니다.

  • Father: 기본 클래스(부모)로, Display() 메서드를 정의
  • Son: 파생 클래스(자식)로, Father를 상속받아 DisplayOne() 메서드 추가
  • Son 객체는 자신의 메서드뿐 아니라 부모의 메서드도 호출 가능

C#은 다중 상속(여러 클래스를 동시에 상속)을 클래스에 대해서는 허용하지 않으며, 단일 상속만 지원합니다. 다만 인터페이스(interface)를 활용하면 여러 인터페이스를 구현하는 방식으로 다중 상속과 유사한 효과를 얻을 수 있습니다.