Swift
[Swift] 구조체와 클래스
thoonk:
2021. 5. 6. 23:13
반응형
구조체와 클래스에 관해 기록합니다.
구조체와 클래스
- 객체지향 프로그래밍(OOP)를 위한 필수 요소로 프로그램의 코드를 추상화하기 위해 사용함
- Swift에서는 다른 프로그래밍 언어와 달리, 구조체와 클래스를 위한 별도의 인터페이스와 파일을 만들 필요가 없음
구조체와 클래스의 공통점
- 여러 변수를 담을 수 있는 컨테이너
- 데이터를 용도에 맞게 묶어 표현하고자 할 때 용이
- 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가짐
- 하나의 새로운 사용자정의 데이터 타입을 만들어 주는 것
- 초기화를 정의하여 초기 상태(이니셜라이저) 설정
- 기능 추가를 위한 확장(extension)이 가능함
- 특정 기능을 위한 프로토콜(protocol) 사용이 가능함
- 서브스크립트(subscript) 사용하여 프로퍼티에 접근하도록 정의 가능함
구조체와 클래스의 차이점
- 구조체 = 값 타입, 클래스 = 참조 타입
- 구조체 상속 X, 클래스 상속 O
- 구조체 인스턴스 타입 캐스팅 X, 클래스의 인스턴스 타입캐스팅 O
- 클래스 인스턴스만 디이니셜라이저(deinit()) 활용
- 클래스 인스턴스만 참조 횟수 계산 적용(why? 클래스 = 참조 타입)
구조체를 사용하는 것이 유리한 경우
- 연관된 간단한 값을 캡슐화하는 것만이 목적일 때
- 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
- 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
- 상속받거나 자신을 상속할 필요가 없을 때
부족한 점 피드백해주시면 감사하겠습니다👍
반응형