Class ,Struct ,Enum

kirri1124·2022년 1월 2일
0

Swift가 궁금해

목록 보기
2/3

들어가기 전

오늘은 Swift 문법의 기초인 Struct, Class, Enum의 차이점에 대해 알아보겠다.
먼저 이 셋 개념에 대해 알아보고 난 뒤에 차이점을 따져보기로 하자.

Class

  • 일반적으로 단일 상속이 가능하지만, 프로토콜을 사용하면 다중 상속도 가능하다.
  • 참조 타입(Reference Type)
  • 타입 캐스팅과 관련된 기능과, deinit등의 기능을 가질 수 있다.
  • 메모리의 Heap영역에 존재한다.

참조타입?
데이터의 크기가 크고 가변적이기에 동적으로 관리 되는 메모리의 힙에 생성되는 것을 말한다.

Struct

  • 상속이 불가능
  • Extension 등 사용이 가능
  • 값 타입(Value Type)
  • 메모리의 Stack 영역에 존재 (값 타입이기 때문에)

Enum

  • 상속이 불가능
  • 값 타입(Value Type)
  • 열거형 자체가 하나의 데이터 타입이다.
  • 열거형의 case 하나하나 전부 유의미한 값으로 취급하게 된다.

공통점과 차이점

공통점

  1. 메서드 정의 가능
  2. 초기화 블록 정의 가능
  3. 프로토콜 구현 가능
  4. 확장(익스텐션) 구문 사용 가능
  5. 서브스크립트 정의 가능
  6. 프로퍼티 정의 가능

차이점

  1. Struct, Enum은 Value Type, Class는 Reference Type 이다.
  2. Struct, Enum은 상속이 불가능하다.
  3. Struct, Enum은 AnyObject로 타입 캐스팅이 불가능하다.
  4. Struct, Enum은 생성자를 구현하지 않을 시 기본 이니셜라이저를 사용할 수 있다.
  5. Class는 Reference Counting 으로 메모리 관리가 가능하다.

0개의 댓글