[Swift] 프로토콜(protocol)

2023. 2. 11. 20:28·Apple/Swift
728x90
반응형

1. 프로토콜(protocol)

  • 특정 클래스와 관련 없는 프로퍼티, 메서드 선언 집합
  •  함수(메서드) 정의는 없음
  • 기능이나 속성에 대한 설계도
  • 클래스(구조체, 열거형)에서 채택(adopt)하여 메서드를 구현해야 한다.
  • 자바와 C#에서 interface에 해당하는 것이다.
  • C++의 abstract base class
  • Protocol Oriented Programming(POP)
  • 프로토콜 단위로 묶어서 표현하고, extension으로 기본적인 것을 구현(protocol default implementation)을 해서 단일 상속의 한계를 극복하고자 하는 프로그래밍 기법이다.

 

2. 스위프트 상속과 프로토콜 채택

  • 부모 클래스는 하나만 가능하며 여러 개라면 나머지는 프로토콜
  • class 클래스명:부모명, 프로토콜명{ }
  • 부모가 있으면 부모 다음에 표기
  • class 클래스명:부모명, 프로토콜명1, 프로토콜명2{ }
  • class 클래스명: 프로토콜명{ }
  • 부모가 없으면 바로 표기 가능
  • class 클래스명:프로토콜명1, 프로토콜명2{ }
  • 클래스, 구조체, 열거형, extension에 프로토콜을 채택(adopt)할 수 있다.
  • 상속은 클래스만 가능하다.

3. protocol 정의

4. 프로토콜과 프로퍼티/메서드 선언

5. protocol 채택과 준수

  • 5행에서 부모를 썼다면 부모로부터 상속을 받았다고 표현하고 프로토콜을 옆에 쓴다면 프로토콜을 채택(adopt)했다고 표현한다.
  • class Man에 x, run() 정의가 없다면
  • type 'Man' does not conform to protocol 'Runnable'

6. 예제

-다음 기능을 전체 하나의 소스로 작성하시오.

-bb()라는 메소드가 하나 있는 프로토콜(protocol) B를 만드시오.

  -bb() 메서드는 Int형 값을 매개변수로 받아 Int형으로 리턴하는 메서드이다.

-클래스 A는 클래스 C라는 부모를 갖는다.(C로부터 상속 받는다.)

-클래스 A에서 프로토콜 B를 채택하고, 준수하는 소스를 작성하시오.

-bb()메서드는 Int형 값을 매개변수로 받아 2배한 값을 Int형으로 리턴하는 메서드이다.

<예제 소스>

728x90
반응형
저작자표시 (새창열림)

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

[Swift] 리터럴, 식별자, 키워드  (0) 2023.07.11
[Swift] 열거형(enum)  (0) 2023.02.12
[Swift] 익스텐션과 접근 제어  (0) 2023.02.09
[Swift] 클래스와 상속, super와 override  (0) 2023.02.08
[Swift] computed property, stored property, self, overloading  (0) 2023.02.01
'Apple/Swift' 카테고리의 다른 글
  • [Swift] 리터럴, 식별자, 키워드
  • [Swift] 열거형(enum)
  • [Swift] 익스텐션과 접근 제어
  • [Swift] 클래스와 상속, super와 override
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (203)
      • Apple (121)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (22)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    visionOS
    프로퍼티 래퍼
    디자인패턴
    UIKit
    SWIFT
    자바스크립트
    티스토리챌린지
    프로세스
    배열
    클래스
    Initializers
    Optional
    오블완
    combine
    연산자
    운영체제
    Vision Pro
    옵셔널
    스위프트
    Xcode
    제어문
    swiftUI
    변수
    메서드
    이니셜라이저
    네트워크
    ios
    코딩테스트
    함수
    비동기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] 프로토콜(protocol)
상단으로

티스토리툴바