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클래스는width와height필드를protected로 선언하여, 외부가 아닌 파생 클래스에서만 접근할 수 있도록 했습니다.Rectangle클래스는Shape를 상속받아setWidth(),setHeight()메서드를 그대로 사용하면서, 자신만의getArea()메서드를 추가했습니다.Main메서드에서는Rectangle객체를 생성한 뒤 가로 5, 세로 7을 설정하고 넓이를 출력합니다.
실행 결과
Total area: 35
정리
C#의 상속은 콜론(:) 기호만으로 간단하게 구현할 수 있으며, 코드 재사용성과 유지보수성을 크게 높여줍니다. 특히 protected 접근 한정자를 활용하면 외부에는 노출하지 않으면서 파생 클래스에게만 멤버를 공개할 수 있어, 보다 안전하고 체계적인 클래스 설계가 가능합니다.