C# - sealed & partial, const & readonly) 복습을 위해 작성하는 글 2023-04-18
📒 갈무리 - sealed & partial, const & readonly
📌 sealed
- Java의 fianl 구문과 같이 클래스 앞에 sealed가 붙으면 상속할 수 없는 클래스가 된다.
- 함수나 속성에 sealed가 붙는다면 해당 클래스를 상속받은 클래스에서는 함수나 속성을 재정의 하는 것이 불가능해진다.
- 기본 클래스로 사용할 수 없기 때문에 추상 클래스 또한 될 수 없다.
- 기본 클래스로 사용할 수 없으므로 일부 런타임 최적화에서는 호출이 약간 더 빠를 수 있다.
📌 partial(C# 2.0부터 도입)
- 동일한 클래스를 여러 파일에 분리하여 개발이 가능하도록 한다.
- 컴파일 시에 하나의 클래스로 통합하여 단일 코드로 인식한다.
- 분할된 클래스는 모두 동일한 접근 지정자를 가져야 한다.
- C#은 다중 상속을 지원하지 않기 때문에 partial 클래스의 부모 클래스가 다를 경우 컴파일 에러를 발생시킨다.
- 하나의 클래스를 나누어서 작업함으로써 작업이 편해질 수 있지만, 무분별한 사용 시 더욱 복잡해질 수 있다.
📌 const
- 컴파일 시 상수값을 대입하여 컴파일하기 때문에 값을 변경할 수 없다.
- 반드시 초기화를 해주어야 한다.
- Java와는 다르게 내장 자료형(정수형, 실수형, enum, string)에 대해서만 사용할 수 있다.
- const로 선언된 데이터는 기본적으로 static(정적)이다.
📌 readonly
- 읽기 전용 변수이기 때문에 초기화한 후 값을 변경할 수 없다.
- 상수와 달리 초기화가 필수는 아니다.
- 생성자에서 읽기 전용 데이터를 초기화할 수 있지만, 생성자 외부에서는 읽기 전용 데이터의 값을 수정할 수 없다.
- non-static(비정적) 데이터와 유사하게 동작한다.
- 객체에 대한 값이기 때문에 접근을 위해서는 객체가 필요하다.
- 런타임 시 값이 정해진다.