final 키워드를 사용하는 이유
29 Jul 2021 | iOS개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
final
타 프로그래밍 언어와 마찬가지고 swift 언어 또한 클래스의 상속을 지원한다. 더이상 해당 클래스에서 하위 클래스로의 전체 클래스 또는 일부(메서드, 프로퍼티)가 상속에 따른 재정의가 될 필요가 없다고 판단한 경우 final
키워드를 각 요소 앞에 추가함으로써 상속을 방지할 수 있다.
- 재정의할 필요가 없을때 사용
- 클래스 자체가 상속되는것을 막고싶을 때 사용 > final 클래스를 상속받으려는 클래스는 컴파일 시 에러가 발생함
이 밑의 개념은 아직 내가 잘 이해를 못한 것 같다.
이해가 되면 이해한 만큼 다시 정리해봐야할 것 같다….ㅠ
vtable
vtable
은 가상 메서드 테이블을 이르는 것으로, 메서드 오버라이딩에 따라 실행 시점에 어떤 메서드를 실행할 지 결정하는 동적 디스패치를 지원하기 위해 프로그래밍 언어에서 사용하는 매커니즘이다.
final 키워드 적용이 성능에 미치는 영향
- final로 선언된 요소들은 직접 호출
- 그렇지 않은 경우는 vtable을 통해 간접 호출
오버라이딩한 메서드는 실행 시점에 어떤 메서드를 실행할 지 결정하는 반면 final
키워드가 적용된 메서드는 컴파일 시점에 어떤 메서드를 실행할 지 결정할 수 있기 때문에 성능 상 이점을 가진다고 한다.