final 키워드를 사용하는 이유

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


final

타 프로그래밍 언어와 마찬가지고 swift 언어 또한 클래스의 상속을 지원한다. 더이상 해당 클래스에서 하위 클래스로의 전체 클래스 또는 일부(메서드, 프로퍼티)가 상속에 따른 재정의가 될 필요가 없다고 판단한 경우 final키워드를 각 요소 앞에 추가함으로써 상속을 방지할 수 있다.

  • 재정의할 필요가 없을때 사용
  • 클래스 자체가 상속되는것을 막고싶을 때 사용 > final 클래스를 상속받으려는 클래스는 컴파일 시 에러가 발생함

이 밑의 개념은 아직 내가 잘 이해를 못한 것 같다.
이해가 되면 이해한 만큼 다시 정리해봐야할 것 같다….ㅠ

vtable

vtable은 가상 메서드 테이블을 이르는 것으로, 메서드 오버라이딩에 따라 실행 시점에 어떤 메서드를 실행할 지 결정하는 동적 디스패치를 지원하기 위해 프로그래밍 언어에서 사용하는 매커니즘이다.

final 키워드 적용이 성능에 미치는 영향

  • final로 선언된 요소들은 직접 호출
  • 그렇지 않은 경우는 vtable을 통해 간접 호출

오버라이딩한 메서드는 실행 시점에 어떤 메서드를 실행할 지 결정하는 반면 final 키워드가 적용된 메서드는 컴파일 시점에 어떤 메서드를 실행할 지 결정할 수 있기 때문에 성능 상 이점을 가진다고 한다.