개발, 공부, 일상 블로그

[Swift] 상속 (Inheritance)

|
[Swift] 상속 (Inheritance)

상속

기반클래스: 아무것도 상속받지 않은 클래스

서브클래싱

class SomeSuperclass {
	var a = 0
}

class SomeSubclass: SomeSuperclass {
	var b = 1
}

let someSubclass = SomeSubclass()
someSubclass.a // SomeSuperclass의 프로퍼티
someSubclass.b // SomeSubclass의 프로퍼티

오버라이딩

메소드 오버라이드

메소드 선언 앞에 override 키워드를 붙임

class Vehicle {
	func makeNoise() {
		print("빵빵")
	}
}

class Bicycle: Vehicle  {
	override func makeNoise() {
		print("따르릉")
	}
}

let bicycle = Bicycle()
bicycle.makeNoise() // 따르릉

프로퍼티 오버라이드

class Vehicle {
	var speed = 0.0
	var description: String {
		return "속도: \(speed) km/h"
	}
}

class Bicycle: Vehicle  {
	var gear = 1
	override var description: String {
		return "\(super.description), 기어: \(gear)"
	}
}

let bicycle = Bicycle()
bicycle.speed = 30.0
bicycle.gear = 3
bicycle.description // 속도: 30.0 km/h, 기어: 3

오버라이드 방지

final 키워드로 선언

class Vehicle {
	final func makeNoise() {
		print("빵빵")
	}
}

class Bicycle: Vehicle  {
	override func makeNoise() { // 컴파일 시 에러 발생
		print("따르릉")
	}
}