상속
이란 부모한테 자식이 물려받는 것처럼, 어떠한 클래스의 프로퍼티와 메소드를 다른 클래스에게 그대로 물려주는 것입니다.
💬 위에서 아래로 내려오는 것
💬 이브이에 여러 속성이 더해져, 다양한 모습으로 진화하는 예시를 생각해봅시다.
ex)
class Friend {
var name : String
init(_ name : String) {
self.name = name
}
func sayHi() {
print("안녕? 나는 \(self.name)라고 해")
}
}
ex)
class BestFriend : Friend {
// var name : String을 이미 가지고 있음
// override로 부모의 메소드를 가져왔다.
override init (_ name : String) {
// super로 부모의 메소드 사용
super.init("베프 " + name)
// friend가 가지고 있는 init에 추가로 더하는 것
}
override func sayHi() {
super.sayHi()
}
}
💬 부모 클래스를 활용할 때, init나 func를 입력하고 enter를 치면 자동으로 override
가 뜹니다!
💬 부모 클래스의 메소드를 활용할 때, super
를 꼭 써줘야 합니다.
ex)
let myFriend = Friend("몽이 누나")
myFriend.sayHi()
let myBestFriend = BestFriend("몽이")
myBestFriend.sayHi()
>>> 안녕? 나는 몽이 누나라고 해
안녕? 나는 베프 몽이라고 해
myBestFriend.name
>>> 베프 몽이
💬 부모가 가지고 있는 name라는 변수를 그대로 따와, 그 위에 새로운 내용을 덮어 썼음을 알 수 있습니다.