SlideShare a Scribd company logo
1 of 11
swift 0x0d
interitance
문현진(arnold@css99.co.kr)
base class
class Vehicle {
var numberOfWheels: Int
var maxPassengers: Int
func description() -> String {
return “(numberOfWheels) wheels;”
+ “up to (maxPassengers) passengers”
}
init() {
numberOfWheels = 0
maxPassengers = 1
}
}
탈 것
subclassing
모든 특징(maxPassengers, numberOfWheels)
+
재정
의(init)
class = 분류
subclass = 부분집합
subclassing
class Bicycle: Vehicle {
init() {
super.init() // swift는 object-C와 다르게 생성자를
// 디폴트로 상속하지 않는다.
numberOfWheels = 2
}
}
subclassing
class Tandem: Bicycle {
init() {
super.init()
maxPassengers = 2
}
}
let tandem = Tandem()
println(“Tandem: (tandem.description())”)
// Tandem: 2 Wheels;
overriding
override = 무시하다.
상속 받은 상위 클래스의 메서드, 프로퍼티, 서브스크립트
를 ‘무시'하고 현재 클래스만의 메서드, 프로퍼티, 서브스크
립트를 사용 할 수 있다.
override 가 없는 오버라이딩 => 에러
overriding
super
상위 클래스 메서드, 프로퍼티, 서브스크립트 접근
override func someMethod() -> {
super.someMethod()
}
overriding - 메서드 오버라이딩
class Car: Vehicle {
var speed: Double = 0.0
init() {
super.init()
maxPassengers = 5
numberOfWheels = 4
}
override func description() -> String {
return super.description() + “; “ + “traveling at (speed) mph”
}
}
overriding - 프로퍼티 오버라이딩
getter, setter 오버라이딩
class SpeedLimitedCard: Car {
override var speed: Double {
get {
return super.speed
}
set {
super.speed = min(newValue, 40.0)
}
}
}
overriding - 프로퍼티 오버라이딩
관찰자 오버라이딩
class AutomaticCar: Car {
var gear = 1
override var speed: Double {
didSet {
gear = Int(speed/10.0) +1
}
}
override func description() -> String {
return super.description() + “ in gear (gear)”
}
}
overriding 방지
@final
@final var, @final func, @final class func, @final subscript

More Related Content

More from Hyun Jin Moon

Swift 0x14 nested types
Swift 0x14 nested typesSwift 0x14 nested types
Swift 0x14 nested typesHyun Jin Moon
 
Swift 0x12 optional chaining
Swift 0x12 optional chainingSwift 0x12 optional chaining
Swift 0x12 optional chainingHyun Jin Moon
 
Swift 0x0e 초기화
Swift 0x0e 초기화Swift 0x0e 초기화
Swift 0x0e 초기화Hyun Jin Moon
 
Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트Hyun Jin Moon
 
Swift 0x02 기본 연산자
Swift 0x02   기본 연산자Swift 0x02   기본 연산자
Swift 0x02 기본 연산자Hyun Jin Moon
 
Swift 0x01 환경 설정
Swift 0x01   환경 설정Swift 0x01   환경 설정
Swift 0x01 환경 설정Hyun Jin Moon
 
Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sortHyun Jin Moon
 
Programming challange crypt_kicker
Programming challange crypt_kickerProgramming challange crypt_kicker
Programming challange crypt_kickerHyun Jin Moon
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service PublishHyun Jin Moon
 

More from Hyun Jin Moon (11)

Swift 0x14 nested types
Swift 0x14 nested typesSwift 0x14 nested types
Swift 0x14 nested types
 
Swift 0x12 optional chaining
Swift 0x12 optional chainingSwift 0x12 optional chaining
Swift 0x12 optional chaining
 
Swift 0x0e 초기화
Swift 0x0e 초기화Swift 0x0e 초기화
Swift 0x0e 초기화
 
Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트
 
Swift 0x02 기본 연산자
Swift 0x02   기본 연산자Swift 0x02   기본 연산자
Swift 0x02 기본 연산자
 
Swift 0x01 환경 설정
Swift 0x01   환경 설정Swift 0x01   환경 설정
Swift 0x01 환경 설정
 
Quick, Tree sort
Quick, Tree sortQuick, Tree sort
Quick, Tree sort
 
Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sort
 
Djang Beginning 2
Djang Beginning 2Djang Beginning 2
Djang Beginning 2
 
Programming challange crypt_kicker
Programming challange crypt_kickerProgramming challange crypt_kicker
Programming challange crypt_kicker
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service Publish
 

Swift 0x0d 상속

Editor's Notes

  1. NOTE 프로퍼티 관찰자는 상수 혹은 읽기 전용 프로퍼티에 추가될 수 없다. 이러한 프로퍼티 값은 다시 설정될 수 없기 때문에 오버라이드의 일부인 willSet() 혹은 didSet()을 제공하는 것은 적절치 않다. 또한 오버라이딩 설정자와 오버라이딩 프로퍼티 관찰자를 동시에 제공할 수 없다. 프로퍼티 값이 변경되는 것을 관찰하고 싶고 이미 그 프로퍼티를 위한 커스텀 설정자를 제공하고 있다면, 커스텀 설정자 안에서 값의 변화를 간단하게 관찰할 수 있다.