티스토리 뷰

iOS

[Swift] Override

Peppo 2021. 11. 11. 19:27
728x90

프로젝트를 처음 만들어봤을때 

가장먼저 맞이해주는 override 많이들 보셨죠 ?

 

가장 처음 반겨줬던 override

아무 생각없이 넘어갔는데 

오늘은 override에 대해 한번 파봅시다!!

 

 


오버라이드 (override)

 

일단 공식문서의 내용을 요약해서 먼저 한번 볼까요

 

상위클래스로부터 상속받은 메서드, 프로퍼티들을 하위 클래스에서 재정의하는 것

 

살짝 알듯 말듯 하네요. 

말보단 코드로 먼저 보시죠 !!

 

 

 

눈으로 보는것 보다 Playground에 따라 쳐보시면 이해가 더 잘갑니다

먼저 Student라는 class를 만들어볼게요.

class Student {
    func sayHello() {
        print("안녕 나는 학생이야")
    }
}

 

호출을 하면 어떻게 나오는지 볼까요 ?

let student = Student()
student.sayHello()

 

응 그래 학생아

 

여기에 Student 클래스를 상속 받아서 Conan 이 인사하는 하위클래스를 만들어볼게요 .

 

class Conan: Student {
    func sayHello() {
        print("내이름은 코난 탐정이져")
    }
}

 

어떻게 뜨셨나요 ?

아래와 같은 화면이 뜨셔야 정상입니다!! 

 

에러!

 

맨처음 언급했던 공식문서 내용을 다시 보면,

상속받은 메서드 프로퍼티를 재정의 하기위해서는 override가 필요합니다. 

 

즉 이렇게 해주면 된다는거죠 ⬇

 

class Conan: Student {
    override func sayHello() {   // <-- override 추가!!
        print("내이름은 코난 탐정이져")
    }
}

let conan = Conan()
conan.sayHello()

// 내이름은 코난 탐정이져

 


 

추가로 

도입부에서도 언급했지만

override 하면 프로젝트 생성할때 

 

override func viewDidLoad() {
  super.viewDidLoad()
}

이거 많이 보셨죠 ?

여기서 super에 대해서도 알아볼건데요! 

 

일단 개념은 아래와 같아요!

 

super.메서드()  // <-- super는 상위클래스를 뜻합니다!!

 

위에 Conan을 예시로 들었던걸 다시 응용해볼게요.

 

class Conan: Student {
    override func sayHello() {
        super.sayHello()
        print("내이름은 코난 탐정이져")
    }
}
let conan = Conan()
conan.sayHello()

이렇게 하면 어떻게 찍힐까요 ?? 

 

오오.. super 

즉,

슈퍼클래스 (Student)의 메서드를 그대로 쓰겠다는 뜻이겠네요 !!

 


뷰 컨트롤러 생성하고 여러 동영상 강의를 보면서 override가 뭔지 몰라서 그냥 넘어갔는데 

하나하나 공부하면서 알아가니까 

아는만큼 보이는것 같아 뿌듯하네요. 

아직 공부할게 정말 많지만 꾸준히 해 나가야겠습니다. 💪

 


이해하는데 도움이 됐어요.

 

1.  https://zeddios.tistory.com/386

2. https://babbab2.tistory.com/126

728x90

'iOS' 카테고리의 다른 글

[iOS] Frame, Bounds 차이  (0) 2021.11.14
WebSocket 용어  (0) 2021.11.12
[Swift] Extension  (0) 2021.11.09
[iOS] UIKit 에서 실시간 Preview 보는 방법  (0) 2021.11.05
[Swift] Generic 제네릭  (0) 2021.10.30