목차
상속
상속은 객체지향 프로그래밍에서 사용되는 중요한 개념으로, 부모 클래스의 특성과 동작을 자식 클래스가 물려받아 재사용하는 것을 의미합니다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다. Swift에서는 클래스 간의 단일 상속만 지원되며, 부모 클래스는 superclass
로, 자식 클래스는 subclass
로 불립니다.
class Vehicle {
var speed: Double
init(speed: Double) {
self.speed = speed
}
func start() {
// Vehicle의 동작
}
}
class Car: Vehicle {
var brand: String
init(speed: Double, brand: String) {
self.brand = brand
super.init(speed: speed)
}
override func start() {
super.start()
// Car의 동작
}
}
위 코드에서 Car
클래스는 Vehicle
클래스를 상속받아 speed
속성과 start()
메서드를 사용할 수 있습니다.
프로토콜 적합성
프로토콜은 메서드, 속성 및 기타 요구 사항의 청사진을 정의하는데 사용됩니다. 클래스, 구조체, 열거형은 프로토콜을 채택하여 해당 요구 사항을 충족시킬 수 있습니다. 이를 통해 개체가 특정 동작 또는 특성을 가질 수 있도록 정의할 수 있습니다.
protocol Printable {
func printDetails()
}
class Document: Printable {
func printDetails() {
// 문서의 세부 정보 출력
}
}
위 코드에서 Document
클래스는 Printable
프로토콜을 채택하여 printDetails()
메서드를 구현합니다.
상속과 프로토콜 적합성의 관계
Swift에서 클래스는 단일 상속만을 지원하지만, 여러 프로토콜을 채택하여 개체의 동작과 특성을 정의할 수 있습니다. 따라서, 상속을 통해 공통 동작을 재사용하고, 프로토콜을 통해 다양한 동작을 구현할 수 있습니다.
protocol Sound {
func makeSound()
}
class Animal {
// 동물의 특성
}
class Dog: Animal, Sound {
func makeSound() {
// 개의 소리
}
}
위 코드에서 Dog
클래스는 Animal
클래스를 상속받고, Sound
프로토콜을 채택하여 makeSound()
메서드를 구현합니다.
결론
Swift에서는 상속을 통해 클래스 간의 관계를 정의하고, 프로토콜을 통해 다양한 동작을 포함시킬 수 있습니다. 이를 통해 유연하고 확장 가능한 코드를 작성할 수 있으며, 객체의 동작과 특성을 명확하게 정의할 수 있습니다.
참고문헌: