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

C# 클래스 상속 방법: 기본 개념부터 실전 예제까지

C# 상속(Inheritance)이란?

상속(Inheritance)은 한 클래스를 다른 클래스를 기반으로 정의할 수 있게 해주는 객체 지향 프로그래밍(OOP)의 핵심 개념입니다. 상속을 활용하면 이미 작성된 코드를 그대로 재사용할 수 있어 애플리케이션을 더 쉽게 만들고 유지보수하기가 한결 수월해집니다.

기본 클래스와 파생 클래스

새로운 클래스를 만들 때 데이터 멤버와 멤버 함수를 처음부터 모두 새로 작성하는 대신, 기존 클래스의 멤버를 물려받도록 지정할 수 있습니다. 이때 상속의 원본이 되는 기존 클래스를 기본 클래스(Base Class)라고 하며, 새로 만들어지는 클래스를 파생 클래스(Derived Class)라고 부릅니다.

참고로 C#에서는 하나의 클래스가 둘 이상의 클래스를 동시에 상속하는 다중 상속은 지원하지 않습니다. 대신 하나의 기본 클래스를 상속하면서 여러 개의 인터페이스를 함께 구현하는 것은 가능합니다.

C# 상속 문법

C#에서 상속은 콜론(:) 기호를 사용해 선언합니다. 파생 클래스 이름 뒤에 콜론을 붙이고 상속받을 기본 클래스를 지정하면 됩니다.

class 파생클래스 : 기본클래스
{
    // 추가 멤버 정의
}

예제 코드

다음 예제는 Shape(도형) 클래스를 기본 클래스로 삼고, 이를 상속받은 Rectangle(사각형) 클래스에서 넓이를 계산하는 코드입니다.

using System;

namespace InheritanceApplication {
    class Shape {
        public void setWidth(int w) {
            width = w;
        }
        public void setHeight(int h) {
            height = h;
        }
        protected int width;
        protected int height;
    }

    // 파생 클래스
    class Rectangle : Shape {
        public int getArea() {
            return (width * height);
        }
    }

    class Demo {
        static void Main(string[] args) {
            Rectangle Rect = new Rectangle();

            Rect.setWidth(5);
            Rect.setHeight(7);
            // 객체의 넓이를 출력합니다.
            Console.WriteLine("Total area: {0}", Rect.getArea());
            Console.ReadKey();
        }
    }
}

코드 설명

  • Shape 클래스는 widthheight 필드를 protected로 선언하여, 외부가 아닌 파생 클래스에서만 접근할 수 있도록 했습니다.
  • Rectangle 클래스는 Shape를 상속받아 setWidth(), setHeight() 메서드를 그대로 사용하면서, 자신만의 getArea() 메서드를 추가했습니다.
  • Main 메서드에서는 Rectangle 객체를 생성한 뒤 가로 5, 세로 7을 설정하고 넓이를 출력합니다.

실행 결과

Total area: 35

정리

C#의 상속은 콜론(:) 기호만으로 간단하게 구현할 수 있으며, 코드 재사용성과 유지보수성을 크게 높여줍니다. 특히 protected 접근 한정자를 활용하면 외부에는 노출하지 않으면서 파생 클래스에게만 멤버를 공개할 수 있어, 보다 안전하고 체계적인 클래스 설계가 가능합니다.