17. Swift 튜토리얼
- 프로토콜
창원대학교 정보통신공학과 박동규
2016. 2.
프로토콜이란
• C++의 추상클래스는 객체를 생성하는 용도가 아
니라 상속을 통해서 물려받은 클래스가 반드시 가
져야 할 프로퍼티와 메소드를 정의하는 용도임
• 자바의 인터페이스 역시 인터페이스를 implement
한 클래스가 반드시 구현해야 할 메소드를 가지고
있다
• 특정 객체가 갖추어야 할 기능이나 속성에 대한
설계도이다
프로토콜
• 실질적인 내용은 없는 프로퍼티나 메소드의 단순
선언문
• 이 프로토콜을 이용하는 객체에서 내용을 정의함
• 프로토콜에 선언된 프로퍼티나 메소드를 프로토
콜의 ‘명세(specification)’이라 한다
• 클래스는 선언시 :(colon) 문뒤에 구현해야 할 프
로토콜을 적어줌
프로토콜 선언과 구현
프로토콜
프로토콜은 구현해야 할 내용의 명세서이므로
구현하지 않으면 오류발생
초기화 구문
• 초기화 구문 역시 프로토콜에서 작성할 수 있다
• 메소드와 마찬가지로 실행블록을 작성하지 않
음
• 매개변수 타입뿐만 아니라 반드시 매개변수명
까지 일치해야 한다
• 클래스에서 초기화구문을 구현할 때는 required
키워드를 붙여야 한다
초기화 구문
class에서 init()을 구현할 경우 required 키워드 사용
다중 상속
• Swift는 다중상속을 허용하지 않는다
프로토콜
• 클래스는 다중상속은 허용하지 않지만 상속과 프로토콜
구현을 동시에 선언할 수 있다
• 상속과 프로토콜에서 동시에 init() 이 있을 경우
overide required를 키워드를 동시에 추가한다
확장구문
• 클래스를 이미 구현한 후에 수정할 필요가 생겼다
• 클래스 코드를 수정하면 되지만, extension을
통해서 클래스를 확장시키는 방법도 있다
• 확장 구문에서 프로토콜을 구현한다면 이후로
해당 클래스는 프로토콜을 구현한 것으로 처리
된다
• 기존 클래스를 수정하지 않아도 된다는 장점이
있음
예제
감사합니다
dongupak@gmail.com

17 swift 프로토콜

  • 1.
    17. Swift 튜토리얼 -프로토콜 창원대학교 정보통신공학과 박동규 2016. 2.
  • 2.
    프로토콜이란 • C++의 추상클래스는객체를 생성하는 용도가 아 니라 상속을 통해서 물려받은 클래스가 반드시 가 져야 할 프로퍼티와 메소드를 정의하는 용도임 • 자바의 인터페이스 역시 인터페이스를 implement 한 클래스가 반드시 구현해야 할 메소드를 가지고 있다 • 특정 객체가 갖추어야 할 기능이나 속성에 대한 설계도이다
  • 3.
    프로토콜 • 실질적인 내용은없는 프로퍼티나 메소드의 단순 선언문 • 이 프로토콜을 이용하는 객체에서 내용을 정의함 • 프로토콜에 선언된 프로퍼티나 메소드를 프로토 콜의 ‘명세(specification)’이라 한다 • 클래스는 선언시 :(colon) 문뒤에 구현해야 할 프 로토콜을 적어줌
  • 4.
  • 5.
    프로토콜 프로토콜은 구현해야 할내용의 명세서이므로 구현하지 않으면 오류발생
  • 6.
    초기화 구문 • 초기화구문 역시 프로토콜에서 작성할 수 있다 • 메소드와 마찬가지로 실행블록을 작성하지 않 음 • 매개변수 타입뿐만 아니라 반드시 매개변수명 까지 일치해야 한다 • 클래스에서 초기화구문을 구현할 때는 required 키워드를 붙여야 한다
  • 7.
    초기화 구문 class에서 init()을구현할 경우 required 키워드 사용
  • 8.
    다중 상속 • Swift는다중상속을 허용하지 않는다
  • 9.
    프로토콜 • 클래스는 다중상속은허용하지 않지만 상속과 프로토콜 구현을 동시에 선언할 수 있다 • 상속과 프로토콜에서 동시에 init() 이 있을 경우 overide required를 키워드를 동시에 추가한다
  • 10.
    확장구문 • 클래스를 이미구현한 후에 수정할 필요가 생겼다 • 클래스 코드를 수정하면 되지만, extension을 통해서 클래스를 확장시키는 방법도 있다 • 확장 구문에서 프로토콜을 구현한다면 이후로 해당 클래스는 프로토콜을 구현한 것으로 처리 된다 • 기존 클래스를 수정하지 않아도 된다는 장점이 있음
  • 11.
  • 12.