[Swift] 상속

김태형·2023년 4월 2일
0

Swift

목록 보기
17/22

이번에는 상속에 대해 작성해보려고 한다.
사실 상속에 관해서 다양한 이니셜라이저가 나타나는데, 이런 것들을 제외하고 가장 중요한 개념들 위주로 정리해볼 예정이다.


상속

  • 클래스는 다른 클래스로부터 메소드나 프로퍼티 등을 상속받을 수 있음
  • 상속에는 부모클래스 자식클래스가 있는데,
    부모클래스는 상위클래스로 자식클래스에게 상속해주는 것이고(부모 클래스의 메소드나 프로퍼티를 자식클래스가 사용할 수 있음),
    자식클래스는 하위클래스로 부모클래스로부터 상속을 받는 것이다.(부모클래스의 메소드나 프로퍼티를 사용하는 클래스)
  • 스위프트에서 상속은 클래스만의 특징으로, 다른 타입에서는 상속을 할 수 없음
class Person {
    var name: String = ""
    var age: Int = 0
    
    var introduction: String {
        return "이름 : \(name). 나이 : \(age)"
    }
    
    func speak() {
        print("가나다라마바사")
    }
}


//Person을 상속 받은 Student
class Student: Person {
    var grade: String = "F"
    
    func study() {
        print("Study hard...")
    }
}


let ted: Student = Student()
ted.speak() //Person에 있는 메소드 사용 가능

재정의

  • 자식클래스는 부모클래스로부터 물려받은 특성을 그대로 사용하지 않고, 자신만의 기능으로 변경하여 사용할 수 있음
  • 상속받은 특성을 재정의하려면 override라는 키워드를 통해 재정의할 수 있음
  • 재정의한 메소드의 부모 버전을 호출하고 싶다면 super.라는 키워드를 통해 호출할 수 있음
//override를 통한 메소드 재정의

class Student: Person {
    var grade: String = "F"
    
    func study() {
        print("Study hard...")
    }
    
    override func speak() {
        print("저는 학생입니다.")
    }
}

재정의 방지 (final)

  • 만약 재정의를 할 수 없도록 하고 싶으면, final 키워드를 명시하면 됨
  • final 키워드가 있는 프로퍼티나 메소드를 재정의하려고 하면 에러가 뜸


[출처] 스위프트 프로그래밍 (야곰), 야곰의 스위프트 기초문법 강좌, 개발하는 정대리 스위프트 강좌

0개의 댓글