HIT해
[Swift 기초문법 - 15] final 본문
Swift에서 final 키워드는 클래스, 메서드, 그리고 속성에 적용될 수 있는 중요한 키워드다. final 키워드를 사용하면 해당 클래스나 메서드, 속성을 더 이상 상속하거나 재정의할 수 없게 만든다.
final 클래스
final 클래스를 선언하면 이 클래스를 상속받는 다른 클래스를 만들 수 없다. 이는 주로 클래스의 동작을 고정하고, 무분별한 상속을 방지하며, 코드의 안전성을 높이기 위해 사용된다.
final class Animal {
var name: String
init(name: String) {
self.name = name
}
func sound() {
print("동물이 소리를 냅니다.")
}
}
// 아래 코드는 컴파일 오류를 발생시킵니다.
// class Dog: Animal {// }
let myAnimal = Animal(name: "Tiger")
myAnimal.sound()// 동물이 소리를 냅니다.
위 예제에서 Animal 클래스는 final 키워드로 선언되었기 때문에, 다른 클래스가 이를 상속받을 수 없다.
final 메서드 및 속성
final 키워드는 클래스뿐만 아니라 메서드와 속성에도 사용할 수 있다. 이는 서브클래스에서 특정 메서드나 속성을 재정의하지 못하도록 만드는 데 유용하다.
class Vehicle {
final var speed: Double = 0.0
final func describe() -> String {
return "현재 속도는 \\(speed)km/h 입니다."
}
}
class Car: Vehicle {
// 아래 코드는 컴파일 오류를 발생시킵니다.
// override var speed: Double {
// get { return super.speed }
// set { super.speed = newValue }
// }
// override func describe() -> String {
// return "자동차 속도는 \(speed)km/h 입니다."
// }
}
위 예제에서 Vehicle 클래스의 speed 속성과 describe 메서드는 final로 선언되었기 때문에, Car 클래스에서 이를 재정의하려 하면 컴파일 오류가 발생한다.
final 키워드의 장점
안전성: 클래스, 메서드, 속성을 final로 선언함으로써 의도치 않은 상속 및 재정의를 방지할 수 있다.
성능 향상: 컴파일러는 final로 선언된 클래스나 메서드를 더 효율적으로 최적화할 수 있다. 이는 실행 성능 향상으로 이어질 수 있다.
명확성: 코드를 읽는 사람에게 이 클래스나 메서드가 더 이상 확장되지 않음을 명확하게 전달할 수 있다.
결론
Swift에서 final 키워드는 클래스, 메서드, 속성의 상속과 재정의를 방지하여 코드의 안전성과 성능을 높이는 데 유용하다. 이를 통해 더 명확하고 신뢰성 있는 코드를 작성할 수 있다. final 키워드를 적절히 활용하여 코드의 일관성을 유지하고, 불필요한 상속을 방지해 보자!
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법 - 17] Error (0) | 2024.07.12 |
---|---|
[Swift 기초문법 - 16] 메소드 매개변수 inout (0) | 2024.07.12 |
[Swift 기초문법 - 14] 딕셔너리 (0) | 2024.07.12 |
[Swift 기초문법 - 13] 상속 (0) | 2024.07.11 |
[Swift 기초문법 - 12] 객체 생성자, 해제자 (0) | 2024.07.11 |