안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 상속에 대해서 공부합니다.
스위프트에서 상속은 클래스 또는 프로토콜 등에서 가능합니다.
열거형, 구조체에서는 사용할 수 없습니다.
형태 :
class ChildClass : ParentClass {
// 구현
}
예제)
부모 클래스
class Espresso {
var name : String = ""
func info() {
print("\(name) 입니다")
}
class func selectShot() {
print("샷은 변경 가능합니다.")
}
final func usedBean() {
print("브라질 산토스 원두를 사용합니다")
}
static func usedBean2() {
print("브라질 산토스 원두를 사용합니다")
}
final class func baseShot() {
print("기본은 2샷입니다")
}
}
// 위 Bean 클래스에서 선언한 함수들 중 final, static, final class 키워드가 포함된 함수들은
자식 클래스에서 재정의를 할 수 없습니다.
자식 클래스에서 부모 클래스의 함수를 재정의할 때는 부모 클래스의 함수 앞에 override 키워드를 붙여줍니다.
class AltongCoffee : Cafe {
var myName : String = ""
override func info() {
print("안녕하세요 \(name)입니다.")
}
override class func selectShot() {
print("3샷으로 주세요")
}
}
let bean : Bean = Bean()
let altong : AltongCoffee : AltongCoffee()
bean.name = "원두"
altong.myName = "알통커피"
bean.info() // 원두입니다
bean.usedBean() // 브라질 산토스 원두를 사용합니다
bean.usedBean2() // 브라질 산토스 원두를 사용합니다
bean.selectShot() // 샷은 변경 가능합니다.
bean.baseShot() // 기본은 2샷입니다
altong.info() // 안녕하세요 알통커피입니다
altong.usedBean() // 브라질 산토스 원두를 사용합니다
altong.usedBean2() // 브라질 산토스 원두를 사용합니다
altong.selectShot() // 3샷으로 주세요
altong.baseShot() // 기본은 2샷입니다
이해가 되셨나요 ㅎㅎ
별도의 키워드가 붙지 않은 함수와 class 키워드가 붙은 함수만 재정의가 가능합니다.
재정의할 때는 앞에 override 키워드를 붙여주면 되구요~
이상입니다!
'Swift3(스위프트3)' 카테고리의 다른 글
swift3 스위프트3 옵셔널 체이닝 / nil 병합 연산자란? (0) | 2017.07.10 |
---|---|
swift3 스위프트3 인스턴스의 생성, 인스턴스 소멸 (0) | 2017.07.07 |
swfit3 스위프트3 프로퍼티와 감시자 (0) | 2017.07.06 |
swift3 스위프트3 클로저 closure (0) | 2017.07.05 |
swift3 스위프트3 값 타입과 참조 타입 - Value Type VS Reference Type (0) | 2017.07.05 |