티스토리 뷰

Swift

[Swift] 상속

Kim_Baechu 2021. 5. 1. 23:32

부모클래스(SuperClass)로부터 받은 메서드를 호출할 수 있고 프로퍼티에 접근할 수 있고 서브스크립트도 사용가능

자식클래스(SubClass)에서 부모클래스의 요소들을 재정의하는 것을 명확히 해야함

 

상속받은 프로퍼티의 값이 변경되었을 때 알려주는 프로퍼티 감시자 구현 가능

 

상속받지 않은 클래스 = 기반클래스(BaseClass)

 

상속 형태

class 클래스명: superclass {
	//프로퍼티와 메서드
}

똑같은 기능을 구현하기 위해 다시 작성할 필요가 없어 재사용하기 용이함

기능확장이 편리함

 

재정의

override

그대로 사용하지 않고 자식클래스에서 변경해서 사용

재정의 했는데 부모의 것을 그대로 사용하고 싶으면 앞에 super 키워드

super.someMethod(), super.someProperty

class Super {
    func sayHello() {
        print("Hi Super")
    }
}

class Sub: Super {
    override func sayHello() {
        super.sayHello()
        print("Hi Sub")
    }
}

let superClass = Super()
superClass.sayHello()

print("-------------")
let subClass = Sub()
subClass.sayHello()

//Hi Super
//-------------
//Hi Super
//Hi Sub

 

프로퍼티 재정의

저장 프로퍼티로 재정의할 수 없음

프로퍼티의 접근자, 설정자, 프로퍼티 감시자 등을 재정의하는 것

class Super {
    var num: Int = 2
    var multiple: Int {
        return self.num*2
    }
    
    func printNum() {
        print("Super \(multiple)")
    }
}

class Sub: Super {
    override var multiple: Int {
        return num*3
    }
        
    override func printNum() {
        super.printNum()
        print("Sub \(multiple)")
    }
}

let superClass = Super()
superClass.printNum()

print("-------------")
let subClass = Sub()
subClass.printNum()

//Super 4
//-------------
//Super 6
//Sub 6

 

 

재정의 방지

final 키워드 사용 하면 재정의할 수 없음 (예 : final func)

final class는 상속하거나 재정의할 수 없음

 

참고 도서

m.yes24.com/Goods/Detail/78907450

 

스위프트 프로그래밍

문법을 넘어 프로그래밍 패러다임도 익히는 스위프트 5스위프트 5의 핵심 키워드는 ‘안정화’다. ABI 안정화 덕분에 버전과 환경에 크게 영향받지 않고 더 유연하게 스위프트를

m.yes24.com

 

 

댓글
공지사항