상속
스위프트의 상속은 클래스, 프로토콜 등에서 가능합니다. 열거형, 구조체는 상속이 불가능합니다. 스위프트는 다중상속을 지원하지 않습니다.
이번 파트에서는 클래스의 상속에 대해서 알아봅니다
클래스의 상속과 재정의
상속 문법
class 이름: 상속받을 클래스 이름 { /* 구현부 */ }
// 기반 클래스 Person 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 finalCalssMethod() { print("type method - final class") } } // Person을 상속받는 Student class Student: Person { var major: String = "" override func selfIntroduce() { print("저는 \(name)이고, 전공은 \(major)입니다") } override class func classMethod() { print("overriden type method - class") } // static을 사용한 타입 메서드는 재정의 할 수 없습니다 // override static func typeMethod() { } // final 키워드를 사용한 메서드, 프로퍼티는 재정의 할 수 없습니다 // override func sayHello() { } // override class func finalClassMethod() { } }
동작 확인
let yagom: Person = Person() let hana: Student = Student() yagom.name = "yagom" hana.name = "hana" hana.major = "Swift" yagom.selfIntroduce() // 저는 yagom입니다 hana.selfIntroduce() // 저는 hana이고, 전공은 Swift입니다 Person.classMethod() // type method - class Person.typeMethod() // type method - static Person.finalCalssMethod() // type method - final class Student.classMethod() // overriden type method - class Student.typeMethod() // type method - static Student.finalCalssMethod() // type method - final class
관련문서
The Swift Programming Language - Inheritance
by yagom
facebook : http://www.facebook.com/yagomSoft
facebook group : https://www.facebook.com/groups/yagom/
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓ 블로거에게 공감은 큰 힘이 됩니다 ↓↓↓
'Swift > 기본문법' 카테고리의 다른 글
옵셔널 체이닝 (2) | 2017.07.06 |
---|---|
인스턴스의 생성과 소멸 (0) | 2017.07.03 |
프로퍼티 - Property (2) | 2017.06.26 |
클로저 - Closure (0) | 2017.06.22 |
클래스, 구조체, 열거형 비교 (0) | 2017.06.19 |