Java
나 숱한 객체지향 언어들을 공부할 때, 자주 접하는 단어인 OOP(Object Oriented Programming)
와는 다르게 Swift
언어에서는 Protocol
과 POP(Protocol Oriented Programming)
이라는 개념이 나온다.
POP, 즉 프로토콜 지향 프로그래밍은 이름 그대로, 객체나 인터페이스 대신 프로토콜을 중심으로 설계하는 프로그래밍을 뜻한다.
인터페이스
의 메소드들은 무조건 추상메서드며 구현부를 가질 수 없으며, 추상클래스
는 기본 동작을 구현한 instance 메소드를 가질 수 있다.
인터페이스와는 달리 추상클래스는 다중 상속이 불가능하다.
참고) Diamond Problem
일반적으로 특정 인터페이스를 상속한 클래스는, 인터페이스에 포함된 모든 메서드를 의무적으로 구현해야한다. 하지만 프로토콜의 경우 Optional 키워드를 사용하면, 선택적으로 구현하는 메서드를 만들 수 있다.
간단한 예를들어 많이 사용하는 UITableViewDelegate
만 해도 상속하고 사용하지 않는 내부메서드가 대부분이다.
제일 마지막 부분 '프로토콜은 프로퍼티에 초기 값을 지정할 수 있음'
프로토콜은 초기 값 지정이 안되고 인터페이스가 초기 값을 줄 수 있어요!