본문 바로가기
IOS - Swift

Swift 기본문법 - 상속

by 게게겍 2022. 9. 15.

📖 상속

📌 상속 (Inheritance)

상속 이란 부모한테 자식이 물려받는 것처럼, 어떠한 클래스의 프로퍼티와 메소드를 다른 클래스에게 그대로 물려주는 것입니다.
클래스에서는 저장된 프로퍼티와 계산된 프로퍼티와 상관없이 상속받은 프로퍼티에 프로퍼티 옵저버를 설정해서 값 설정에 반응할 수 있습니다.

💬 위에서 아래로 내려오는 것
💬 이브이에 여러 속성이 더해져, 다양한 모습으로 진화하는것이 하나의 예시입니다.


📌 클래스 생성

class Friend {
    var name : String
    
    init(_ name : String) {
        self.name = name
    }
    
    func sayHi() {
        print("안녕? 나는 \(self.name)라고 해")
    }
}

📌 오버라이딩 (Overriding)

서브클래스(부모로 부터 성격을 상속받고 자기 자신 고유의 특성도 추가한것)에서는
부모클래스에서 상속받은 것을 재정의 할 수 있습니다.
이것을overriding이라 부르는데, 오버라이딩은 인스턴스 메소드, 타입 메소드, 인스턴스 프로퍼티, 타입 프로퍼티, 서브스크립트 모두에 대해 가능합니다. 오버라이드를 위해서는 다른 선언 앞에 override
키워드를 붙여줍니다. Swift에서는 이 override 키워드를 보면 부모에 그 정의가 있는지 확인합니다.
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 를 꼭 써줘야 합니다.


📌 활용

let myFriend = Friend("코더")

myFriend.sayHi()

let myBestFriend = BestFriend("후니")

myBestFriend.sayHi()

>>> 안녕? 나는 코더라고 해
안녕? 나는 후니라고 해
myBestFriend.name

>>> 후니

💬 부모가 가지고 있는 name라는 변수를 그대로 따와, 그 위에 새로운 내용을 덮어 썼음을 알 수 있습니다.


📌 Preventing Overrides(Final Class)

특정 메소드, 프로퍼티, 서브스크립트가 오버라이드 되는 것을 방지하려면 final키워드를 사용합니다.

다시말해, final로 선언되면 override되는 것을 막을 수 있습니다.

 


 

https://jusung.gitbook.io/the-swift-language-guide/language-guide/13-inheritance

 

 

'IOS - Swift' 카테고리의 다른 글

Swift 기초문법 - In-out Parameters  (0) 2022.09.15
Swift 기본문법 - Dictionary  (0) 2022.09.15
Swift 기초문법 - Closure  (0) 2022.09.14
Swift 기초문법 - Generic  (0) 2022.09.14
Swift 기초문법- struct와 class의 차이  (0) 2022.09.14