→ 내가 사용하는 자바 기준 구조체는 따로 없지만 두 가지를 모두 갖고 있는 언어에서는 차이점이 두드러진다.
항목 | 클래스 (class ) |
구조체 (struct ) |
---|---|---|
기본 접근 제어자 | private |
public |
상속 가능 여부 | 가능 | 가능 |
멤버 함수 | 가질 수 있음 | 가질 수 있음 |
캡슐화 | 가능 | 가능 |
사용 목적 | 주로 객체 지향 설계에 사용 | 주로 간단한 데이터 묶음 (Plain data) |
항목 | 클래스 (class ) |
구조체 (struct ) |
---|---|---|
값/참조 타입 | 참조 타입 (Reference Type) | 값 타입 (Value Type) |
상속 | 가능 (다형성 지원) | 불가능 (인터페이스만 구현 가능) |
기본 생성자 | 사용자 정의 가능 | 사용자 정의 기본 생성자 없음 (파라미터 없는 생성자 금지) |
GC 영향 | 힙에 할당, GC 대상 | 스택에 주로 할당, GC 부담 적음 |
항목 | 클래스 (class ) |
구조체 (struct ) |
---|---|---|
값/참조 타입 | 참조 타입 | 값 타입 |
상속 | 가능 | 불가능 |
ARC 적용 | 적용됨 | 적용되지 않음 |
사용 패턴 | 복잡한 객체 모델링에 적합 | 간단하고 변하지 않는 데이터 표현에 적합 |
→ 단일연결리스트에 대해서 검색하다가 트릭으로 알아낸 방법이다.
(연결 리스트의 head도 없고 prev도 없는 상황에서 노드 삭제 할 때 쓰기 좋다)
A -> B -> C -> D
current = c 이고 B를 모르는 상황!