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

C#의 기본 클래스(Base Class)란 무엇일까요? 상속 개념 완벽 정리

C#에서 클래스를 설계할 때, 모든 데이터 멤버와 멤버 함수를 처음부터 새로 작성하는 대신 기존에 만들어진 클래스의 멤버들을 물려받아 사용할 수 있습니다. 이때 멤버를 제공하는 기존 클래스를 기본 클래스(Base Class)라고 부르며, 이를 상속받아 새로 만들어지는 클래스를 파생 클래스(Derived Class)라고 합니다.

이러한 상속 메커니즘은 코드의 재사용성을 높이고 중복을 줄여주기 때문에 객체 지향 프로그래밍의 핵심 개념 중 하나로 꼽힙니다.

다중 상속과 인터페이스

C#에서는 하나의 클래스가 여러 개의 인터페이스로부터 파생될 수 있습니다. 즉, 여러 인터페이스에 정의된 데이터와 기능을 동시에 구현하여 상속받는 것이 가능합니다. 다만 클래스 간의 직접적인 다중 상속은 지원하지 않으며, 이 경우 인터페이스를 활용하는 것이 일반적인 방식입니다.

기본 클래스 문법

C#에서 기본 클래스를 상속받는 기본 문법은 다음과 같습니다.

<access-specifier> class <base_class> {
   ...
}

class <derived_class> : <base_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 RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // 객체의 넓이 출력
         Console.WriteLine("Total area: {0}", Rect.getArea());
         Console.ReadKey();
      }
   }
}

실행 결과

Total area: 35

코드 설명

Shape 클래스에는 widthheight라는 protected 필드와 이 값을 설정하는 setWidth(), setHeight() 메서드가 정의되어 있습니다. protected 접근 한정자를 사용했기 때문에 이 멤버들은 외부에서는 접근할 수 없지만, 이를 상속받은 파생 클래스 내부에서는 자유롭게 사용할 수 있습니다.

Rectangle 클래스는 Shape를 상속받아 부모 클래스의 필드와 메서드를 그대로 활용하면서, 사각형의 넓이를 계산하는 getArea() 메서드만 추가로 정의했습니다. 결과적으로 가로 5, 세로 7의 값을 설정하면 넓이 35가 출력됩니다.

이처럼 상속을 활용하면 공통 기능을 기본 클래스에 한 번만 작성해 두고, 파생 클래스에서는 필요한 기능만 추가·확장하는 효율적인 구조를 만들 수 있습니다.