class
와 struct
는 개념은 비슷하지만 메모리 측에서는 동작하는 방법이 다르기 때문에 헷갈리는 개념이라고 한다.
심화 강의에서 더 자세하게 배울 예정이지만, 지금까지 배운 것을 토대로 간단히 차이점과 공통점을 정리해보는 게 좋을 것 같다.
프로퍼티
와 메소드
로 구성되어 있다.인스턴스
를 생성하여 사용할 수 있다. (비유: 붕어빵틀과 붕어빵, 자동차 설계도와 자동차)데이터타입
으로 사용할 수 있다.class | struct | |
---|---|---|
초기화 (init) | 직접 초기화해줘야됨 (모든 프로퍼티가 Default 값 정해졌거나 Optional인 경우 제외) | 직접 초기화도 가능하지만, 하지 않더라도 자동 초기화됨 (memberwise initializer) |
이니셜라이저 | convenience initializer | memberwise initializer |
인스턴스 타입 | Reference Type | Value Type |
프로퍼티 | 함수에 class의 인스턴스를 전달하고 프로퍼티를 변경하면 원본도 변경됨 | struct의 인스턴스는 값이 복사되므로, 서로 다른 값으로 처리됨 |
인스턴스를 let으로 선언 시 | 프로퍼티 변경 가능 | 프로퍼티 변경 불가능 |
상속 | 가능 (참조: 객체지향프로그래밍) | 불가능 |
소멸자 (deinit) | class에서만 사용 가능 | struct에는 없음 |
mutating | class에서는 딱히 쓰지 않아도 됨 (없는 듯?) | 프로퍼티를 변경하는 함수 앞에는 꼭 붙여줘야 함 (안그럼 오류남) |
객체지향프로그래밍
이란 걸 살펴봐야겠다.Double
이나 String
이런 것도 클래스니까.. 이미 일종의 상속을 받고 있는건지?? 모르겠다.. 더 배우자;