c# sealed keyword (block method overriding)

메소드나 클래스를 봉인하여 상속 클래스가의 재정의(overriding)를 막을 수 있다.
C#에서는 sealed 키워드, 자바에서는 final 키워드를 사용한다. C#과 C++ 같은 언어는 메소드가 기본적으로 봉인된 것으로 간주한다. virtual 키워드를 부여하여 봉인을 해제한다. 반면, 자바와 같은 언어에서는 기본적으로 메스도가 봉인되지 않다.

봉인이 바람직한 것인지에 대한 많은 논란이 있다. 지시에 따르는 태도(directing attitude)를 가진 이들은 재정의가 가능한 클래스나 기능(features)에 대해 매우 조심스러워서 안전할 것으로 간주된 것만 확장을 허용 한다. 개발자의 여지를 허용하는 태도(EnablingAttitude)를 가진 이들은 확장이 필요한 메소드와 그렇지 않을 것을 예측할 수 없다는 견해를 갖는다. 프로그래머가 원하면 어떤 메소드라도 재정의를 할 수 있는 대신에 책임감을 갖고 주의해야 한다. 대개 나는 후자의 태도 갖는다.