final 키워드와 sealed
Java에는 final 키워드가 존재하지만, C#에는 이에 직접 대응하는 구현이 없습니다. 동일한 기능이 필요하다면 대신 sealed 키워드를 사용해야 합니다.
sealed를 사용하면 메서드의 재정의(오버라이딩)를 방지할 수 있습니다. C#에서 메서드에 sealed 한정자를 적용하면 해당 메서드는 더 이상 파생 클래스에서 재정의할 수 없게 됩니다. 단, sealed 메서드는 반드시 파생 클래스의 멤버여야 하며, 이미 override로 재정의된 메서드에만 사용할 수 있다는 점에 유의해야 합니다.
finally 블록
finally 블록은 예외가 발생하든 발생하지 않든 특정 코드가 반드시 실행되도록 보장할 때 사용합니다. 예를 들어 파일을 열었다면, 처리 도중 예외가 발생했는지 여부와 관계없이 파일을 반드시 닫아야 합니다. 이처럼 finally 블록에 리소스 해제 코드를 작성하면 예외 상황에서도 자원 누수 없이 안정적으로 동작하는 프로그램을 만들 수 있습니다.
Finalize 메서드
C#의 Finalize는 데이터베이스 연결과 같은 비관리형(unmanaged) 리소스를 해제하는 데 사용됩니다. finalize() 메서드는 관리되지 않는 리소스를 정리하는 목적으로 쓰이며, 가비지 컬렉터가 객체를 회수하기 전에 호출됩니다. 다만 호출 시점을 개발자가 제어할 수 없기 때문에, 실무에서는 IDisposable 인터페이스 구현과 using 문을 활용한 명시적 리소스 해제가 더 권장됩니다.