본문 바로가기
2021_iOS [ Swift ]/강의 내용 정리

7주차 [ Swift 문법 : extension, 접근 제어, protocol, enum]

by 황민우 2021. 10. 14.

extension(익스텐션)

 ▸ class, struct, enum, protocol에 새로운 기능을 추가
 ▸ 하위 클래스를 생성하거나 참조하지 않고 기존 클래스에 메서드, 생성자(initializer), 계산 프로퍼티 등의

    기능을 추가하기 위하여 사용
 ▸ 클래스(구조체, 열거형, protocol)는 다음과 같은 형태로 확장(익스텐션)함

 

형식

extension 기존타입이름 {
// 새로운 기능
}

access modifier

▸ 접근 속성(접근 수정자, 액세스 수정자, 액세스 지정자 )는 클래스, 메서드, 멤버의 접근 가능성을

   설정하는 객체 지향 언어의 키워드
▸ 구성 요소를 캡슐화 하는 데 사용


swift의 access control

public class MyClass{
// 모듈의 모든 소스 파일 내에서 접근+정의한 모듈을 가져오는 다른 모듈의 소스파일에서도 접근 가능
fileprivate var name : String = "Kim"
//현재 소스 파일 내에서만 사용 가능
private func play() {}
//현재 블럭 내에서만 사용 가능
func display(){} // internal 생략됨
//해당 모듈의 모든 소스 파일 내에서 사용
}

 


접근 제어

▸ private : 블록과 동일한 파일에 있는 해당 선언의 extension으로 제한한다. 
▸ fileprivate : 해당 소스 파일 내에서만 사용가능
▸ internal : 접근 제어를 생략하면 internal이 기본
▸ public 
▸ open  : 접근은 클래스 및 클래스 멤버에만 적용(구조체같은곳에서 사용 X)  


프로토콜(protocol)

▸ 특정 클래스와 관련없는 함수(메서드)들의 선언 집합 
▸ 함수(메서드) 정의는 없음
▸ 기능이나 속성에 대한 설계도
▸ 클래스, 구조체(struct), 열거형(enum), extension에 프로토콜을 채택(adopt)할 수 있다.


Protocol Oriented Programming(POP)

▸ 프로토콜 단위로 묶어 표현하고, extension으로 기본적인 것을 구현(protocol default implementation)을 해서 단일 상속의 한계를 극복

protocol 프로토콜명{
   프로퍼티명
   메서드 선언 //메서드는 선언만 있음
}
protocol 프로토콜명 : 부모1프로토콜, 부모2프로토콜{
   // 프로토콜은 다중 상속도 가능
}

열거형(enum)

▸ 입력 받을 값이 한정되어 있을 때
▸ 특정 값 중 하나만 선택하게 할 때
형식

enum 열거형명{
   열거형 정의
}

ex )  enum Compass {
 case North, South, East, West
}

'iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용 변형 및 요약'

댓글