B-des 객체지향

클래스, 상속, 다형성을 바인딩 시점으로 판별하기

객체지향은 용어 암기보다 호출 대상이 언제 결정되는지 보는 문제가 많다. 클래스, 객체, 상속, 오버라이딩, 다형성을 메모리와 호출 흐름으로 묶어 판별한다.

01

타입 확인

변수의 선언 타입과 실제 생성 객체 타입을 나눠 본다.

참조 타입과 실체 분리
02

메서드 후보

상속 계층에서 같은 이름, 같은 시그니처가 있는지 확인한다.

오버로딩과 구분
03

바인딩 시점

정적 바인딩은 컴파일 시점, 동적 바인딩은 실행 시점 객체가 결정한다.

virtual/override 맥락
04

캡슐화 검증

외부 접근은 공개 메서드로 제한하고 내부 상태 변경 조건을 클래스가 지킨다.

필드 공개는 위험
추상화
필요한 특징만 모델링 문제 도메인에서 의미 있는 속성과 행동만 남긴다.
불필요한 세부 제거
캡슐화
상태 보호와 불변식 유지 setter 남발보다 유효한 상태 전이를 메서드로 제한한다.
검증 책임은 객체
상속
is-a 관계일 때 사용 단순 코드 재사용 목적이면 합성이 더 안정적인 선택이다.
부모 변경 전파 점검
다형성
호출 코드는 공통 인터페이스에 의존 구현 객체를 바꿔도 호출 구조가 유지된다.
확장성 판단 근거

오버로딩 · 오버라이딩 · 상속 함정 점검

오버로딩 매개변수 목록이 다르면 같은 이름이어도 정적 선택 문제가 된다.
오버라이딩 부모 메서드를 자식이 같은 시그니처로 재정의하면 실행 객체가 중요하다.
상속 함정 private 멤버 직접 접근, 생성자 호출 순서, 부모 참조의 멤버 접근 범위를 확인한다.