기본 문법 공부(구조체와 클래스의 차이)
이 포스트는 야곰님의 Swift 프로그래밍 2판을 보고 스스로 공부한 내용을 정리한 포스트 입니다.
구조체와 클래스의 공통점
-
값을 저장하기 위해 프로퍼티를 정의할 수 있다.
-
기능 실행을 위해 메서드를 정의할 수 있다.
-
서브스크립트 문법을 통해 구조체 또는 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있다.
-
초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다.
-
초기구현과 더불어 새로운 기능 추가를 위해 익스텐션을 통해 확장할 수 있다.
-
특정 기능을 실행하기 위해 특정 프로토콜을 준수할 수 있다.
구조체와 클래스의 차이점
-
구조체는 상속할 수 없다.
-
타입캐스팅은 클래스의 인스턴스에만 허용된다.
-
디이니셜라이저는 클래스의 인스턴스에만 활용할 수 있다.
-
참조 횟수 계산(Reference Counting)은 클래스의 인스턴스에만 적용된다.
구조체와 클래스의 공통점과 차이점에 대한 총평
-
구조체와 클래스는 겉보기엔 정의하는 방법, 인스턴스화하는 방법, 프로퍼티와 메서드를 갖는다는 점을 비롯해 많은 부분에서 비슷해보인다.
-
이 두 타입(Struct 와 Class)을 구분 짓는
가장 큰 차이점
은값 타입(Struct)과 참조 타입(Class)
이라는 것이다. -
클래스는 참조 타입
이므로 참조 횟수 계산(Reference Counting)은 클래스의 인스턴스에만 해당된다.