공부한 것 꼭꼭 씹어먹기

상속 본문

Swift 기초

상속

젤라솜 2021. 10. 27. 20:43
반응형
// 프로퍼티 오버라이드 
// 프로퍼티 재정의 : 프로퍼티 자체가 아닌 프로퍼티의 getter/setter/opserver를 재정의
class Vehicle {
	var currentSpeed = 0.0
	var description: String {
		return "traveling at \(currentSpeed) miles per hour"
	}
}

class Car: Vehicle {
	var gear = 1
	override var currentSpeed: Double { // 상속받은 프로퍼티에 옵저버를 붙여보았다 
		didSet {
			gear = Int(currentSpeed / 10) + 1
		}
	}
	override var description: String {  // 상속받은 프로퍼티에 setter를 변경해주었다
		return super.description + " in gear \(gear)"
	}
}

let car = Car()
car.currentSpeed = 30.0
car.gear = 2
print(car.description)

// 계산프로퍼티, 저장프로퍼티를 오버라이드한 프로퍼티는 getter/setter를 가질 수 있다
// subclass에서 오버라이드하고자 하는 superclass의 프로퍼티는 타입과 이름이 같아야 한다
// 부모가 read-only로 가지고 있었던 프로퍼티를 자식이 writable하게 상속받을 수 없음
// final : 만약 Vehicle 클래스의 var currentSpeed를 final var currentSpeed 이렇게 바꾸면 subclass에서 값 못바꾼다
// 만약 Vehicle 클래스 앞에 final 붙이면 아예 상속을 할 수 없음
반응형

'Swift 기초' 카테고리의 다른 글

protocol  (0) 2021.10.29
타입캐스팅 : is, as  (0) 2021.10.28
property  (0) 2021.10.26
class, struct, enum  (0) 2021.10.25
함수  (0) 2021.10.24
Comments