C# 비정적 클래스의 개념
C#에서 비정적(non-static) 클래스는 인스턴스를 생성할 수 있는 일반적인 클래스를 의미합니다. 반면 정적(static) 클래스는 인스턴스화할 수 없어서 new 키워드를 사용해 해당 클래스 타입의 변수를 만들 수 없습니다.
비정적 클래스와 정적 클래스의 주요 차이점
- 인스턴스 생성 가능 여부: 비정적 클래스는
new키워드로 객체를 생성할 수 있지만, 정적 클래스는 그렇지 않습니다. - 메서드 구성: 비정적 클래스는 인스턴스 메서드와 정적 메서드를 모두 가질 수 있습니다. 정적 클래스는 정적 멤버만 포함할 수 있습니다.
- 멤버 접근 방식: 정적 클래스의 멤버는 클래스 이름 자체를 통해 접근합니다.
- 봉인(sealed) 특성: 정적 클래스는 암시적으로 봉인(sealed)되어 있으므로 상속될 수 없습니다.
비정적 클래스 예제
public class Calculate
{
public int Add(int a, int b)
{
return a + b;
}
}위와 같이 선언된 비정적 클래스는 다음과 같이 객체를 생성해 사용할 수 있습니다.
Calculate calc = new Calculate(); int result = calc.Add(3, 5);
정적 클래스 예제
public static class Calculate
{
public static int Add(int a, int b)
{
return a + b;
}
}정적 클래스는 별도의 객체 생성 없이 클래스 이름으로 직접 호출합니다.
int result = Calculate.Add(3, 5);
정리
객체의 상태(state)를 유지하거나 여러 인스턴스가 필요한 경우에는 비정적 클래스를 사용하고, 유틸리티성 기능처럼 상태 없이 공통으로 사용되는 기능은 정적 클래스로 구현하는 것이 좋습니다.