Structure와 Class는 객체 지향 프로그래밍에서 사용되는 데이터 형식을 정의하는 두 가지 키워드이다.
Class
- 참조 타입 (Reference Type) : 클래스는 참조 타입이다. 클래스 인스턴스ㅌ는 힙 메모리에 저장되고, 변수는 해당 객체를 가리키는 참조를 갖게 된다.
- 상속 지원 : 클래스는 상속을 통해 새로운 클래스를 정의, 확장할 수 있다.
- 가시성 지정 가능 : 클래스의 멤버(필드, 메서드 등)는 접근제한자를 통해 접근 제어가 가능하다.
- 생성자 및 소멸자 : 클래스는 생성자와 소멸자를 가질 수 있다. 생성자는 객체 초기화를 위해 사용된다. 소멸자는 객체가 소멸될 때 특정 작업을 수행하는 데에 사용된다.
Structure
- 값 타입 (Value Type) : 구조체는 값 타입이다. 구조체 인스턴스가 스택 메모리에 저장되고, 변수에는 해당 값이 직접 저장된다.
- 상속 불가능 : 구조체는 상속을 지원하지 않는다.
- 기본 생성자 : 구조체는 기본 생성자를 가지지 않는다. 필요한 경우 사용자 정의 생성자를 만들어야 한다.
- 가시성 제한 : 구조체의 멤버는 public, private 접근제한자만 사용 가능하며, protected등의 접근제한자를 사용할 수 없다.