Swift

[Swift] 상속

yevdev 2022. 8. 2. 13:05

Swift 에서의 상속

  • 프로토콜, 클래스에서 사용 가능
  • 열거형, 구조체에서는 사용 불가
  • 다중상속 지원 X

 

 

클래스에서의 상속에 대해 알아보자!

1️⃣ 상속 정의

class 이름 : 상속받을 클래스 이름 {
	// 구현
}

 

2️⃣ 메소드 키워드 정리

class Person{
    var name: String = ""
    
    func selfIntroduce() {
        print("저는 \(name) 입니다.")
    }
    
    // final 키워드 : 재정의 방지
    final func sayHello() {
        print("hello")
    }
    
    // 타입메서드
    // 재정의 불가 타입 메서드 : static
    static func typeMethod() {
        print("type method - static")
    }
    
    // 재정의 가능 타입 메서드 : class
    class func classMethod() {
        print("type method - class")
    }
    
    // 재정의 가능한 타입메서드 class라도 final 키워드를 앞에 붙이면 재정의가 불가해짐
    // 매서드 앞의 static 이나 final class는 같은 역할!
    final class func finalClassMethod() {
        print("type method - final class")
    }
}

 

3️⃣ 메서드 재정의 해보기

- 재정의는 override 키워드를 통해 할 수 있다.

class Student: Person {
    var major: String = ""
    
    override func selfIntroduce() {
        print("제 이름은 \(name)이고, 전공은 \(major)입니다.")
    }
       
    override class func classMethod() {
        print("class를 사용하여 재정의 될 수 있는 타입 메서드")
    }
}

🚫 static 이나 final class 키워드로 정의된 타입 메서드는 재정의 될 수 없음!!

 

 

 


Reference

- 야곰의 스위프트 기본 문법 강좌

'Swift' 카테고리의 다른 글

[Swift] 타입캐스팅 : is, as  (0) 2022.08.13
[Swift] 서브스크립트  (0) 2022.08.13
[Swift] 백준 : 10814 (구조체)  (0) 2022.08.02
[Swift] zip(_:_:)  (0) 2022.07.27
[Swift] 모나드 : 컨텍스트, 함수객체, 모나드  (0) 2022.03.24