스위프트(Swift)에서 상속은 객체 지향 프로그래밍의 중요한 개념 중 하나로, 기존 클래스의 속성과 메서드를 재사용하고 확장할 수 있게 합니다. 스위프트에서는 클래스만 상속이 가능하며, 구조체와 열거형은 상속할 수 없습니다.
다음은 스위프트에서 상속을 사용하는 방법에 대한 예제입니다:
class Animal {
var name: String
init(name: String) {
self.name = name
}
func speak() {
// 이 메서드는 자식 클래스에서 재정의할 예정입니다.
}
}
자식 클래스 정의 및 상속
Animal 클래스를 상속받아 Dog와 Cat 클래스를 정의할 수 있습니다.
class Dog: Animal {
override func speak() {
print("\(name) says Woof!")
}
}
class Cat: Animal {
override func speak() {
print("\(name) says Meow!")
}
}
객체 생성 및 메서드 호출
let dog = Dog(name: "Buddy")
let cat = Cat(name: "Whiskers")
dog.speak() // Output: Buddy says Woof!
cat.speak() // Output: Whiskers says Meow!
상속의 주요 개념
- 기본 클래스(Base Class): 다른 클래스에 의해 상속될 수 있는 클래스입니다. 예제에서 Animal 클래스가 기본 클래스입니다.
- 자식 클래스(Subclass): 기본 클래스를 상속받아 그 특성과 메서드를 재사용하는 클래스입니다. 예제에서 Dog와 Cat 클래스가 자식 클래스입니다.
- 메서드 재정의(Overriding): 자식 클래스에서 기본 클래스의 메서드를 재정의하여 자신만의 기능을 구현할 수 있습니다. 예제에서 speak 메서드가 재정의되었습니다.
상속과 초기화
상속을 사용하는 경우, 자식 클래스의 초기화 메서드에서는 반드시 기본 클래스의 초기화 메서드를 호출해야 합니다. 이는 기본 클래스의 속성들이 올바르게 초기화되도록 보장합니다.
class Bird: Animal {
var canFly: Bool
init(name: String, canFly: Bool) {
self.canFly = canFly
super.init(name: name) // 기본 클래스의 초기화 메서드를 호출
}
override func speak() {
print("\(name) chirps!")
}
}
let bird = Bird(name: "Tweety", canFly: true)
bird.speak() // Output: Tweety chirps!
이처럼 스위프트에서 상속을 사용하면 코드의 재사용성을 높이고, 클래스 간의 관계를 명확하게 정의할 수 있습니다.
'Swift '문법'' 카테고리의 다른 글
객체를 만들기 위한 초기화 (0) | 2024.07.18 |
---|---|
클래스 상속 (0) | 2024.07.17 |
Struct (2) | 2024.07.15 |
Dictionary (0) | 2024.07.11 |
Array (0) | 2024.07.10 |