티스토리 뷰

IT/Swift

Swift Overriding and Overloading

미닉길 2019. 4. 29. 11:09
반응형

안녕하세요. 도미닉입니다.

 

오늘은 오버로딩과 오버라이딩에 대해서 알아보겠습니다.

 

오버로딩(overloading) 이란 같은 이름의 메소드를 매개변수가 다르게 여러번 선언할 수 있는 것을 의미합니다.

 

오버로딩에는 생성자 오버로딩과 메소드 오버로딩이 있습니다.

 

생성자 오버로딩과 메서드 오버로딩

init 생성자를 매개변수 숫자를 다르게 해서 두번 선언했습니다.

 

이러한 것을 생성자 오버로딩이라고 합니다.

 

eat 메서드를 매개변수 숫자를 다르게 해서 두번 선언했습니다.

 

이러한 것을 메서드 오버로딩이라고 합니다.

 

매개변수가 같고 리턴타입이 다르면 선언(오버로딩)은 되는데 호출하면 오류 발생

 

오버라이딩(overriding)상위 클래스에서 선언한 메서드를 하위 클래스에서 재정의해서 사용하는 것을 의미합니다.

 

위에 오버로딩의 예제를 들었던 소스에서 People 클래스의 eat 메서드를 선언했었습니다.

 

Student 클래스는 People 클래스를 상속받습니다.

 

eat 라는 메서드를 재정의하려고 하자 오류가 발생했습니다.

 

재정의 선언에는 'override'키워드가 필요합니다.

Overriding 임에도 불구하고 override 라는 키워드를 앞에 적어주지 않아서 오류가 발생합니다.

 

앞에 override 를 붙여주니 제대로 실행 되었습니다.

 

오버라이딩 성공

 

오버라이딩은 매개변수의 이름이나 타입이 달라지면 오류 발생합니다.

 

매개변수의 이름이 달라서 오류 발생
매개변수의 타입이 바뀌어도 오류 발생

 

 

오버로딩과 오버라이딩의 성립 조건은 아래 표와 같습니다.

 

구분 오버로딩(Overloading) 오버라이딩(Overriding)
메서드 이름 동일 동일
매개변수의 이름, 타입 다름 동일
리턴 타입 상관없음 동일

 

 

반응형

'IT > Swift' 카테고리의 다른 글

Swift Enum  (0) 2019.05.09
Swift Patterns and Pattern matching  (0) 2019.05.03
Swift Protocol and Polymorphism  (0) 2019.04.25
TDD 와 Swift 를 이용해 가상 Git 제작 하기 - 1  (0) 2019.04.22
Swift Property  (0) 2019.04.17
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함