본문 바로가기

Swift '문법'

상속

스위프트(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!

상속의 주요 개념

  1. 기본 클래스(Base Class): 다른 클래스에 의해 상속될 수 있는 클래스입니다. 예제에서 Animal 클래스가 기본 클래스입니다.
  2. 자식 클래스(Subclass): 기본 클래스를 상속받아 그 특성과 메서드를 재사용하는 클래스입니다. 예제에서 Dog와 Cat 클래스가 자식 클래스입니다.
  3. 메서드 재정의(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