1. 상속이란?
기존 클래스를 기반으로 새로운 클래스를 만드는 것이다. 자식 클래스는 부모 클래스의 필드와 메서드를 물려받는다. 상속은 is-a 관계일 때만 사용해야 한다.
자바에서 상속은 extends 키워드를 사용하며, 하나의 클래스만 상속할 수 있는 단일 상속 구조를 갖는다.
class 상위클래스명 {
// 필드와 메서드
}
class 하위클래스명 extends 상위클래스명 {
// 상위 클래스의 멤버 사용 가능 + 추가 멤버 정의 가능
}
핵심 목적
- 공통된 속성과 동작을 부모 클래스에 정의
- 자식 클래스에서는 재사용
- 클래스 간 계층 구조 형성
상속을 사용하면 클래스 간에 부모-자식 관계가 형성된다.
- 부모 클래스: 공통 개념
- 자식 클래스: 부모 개념을 구체화한 하위 개념
이러한 구조를 통해 객체 지향 프로그램은 현실 세계의 개념을 단계적으로 표현할 수 있다.
2. 상속의 핵심: is-a 관계
상속이 가능한지 판단하는 기준은 "~은 ~이다" 라는 문장이 성립하는 가이다.
- 학생은 사람이다 -> 가능
- 자동차는 엔진이다 -> 불가능
is-a 관계가 성립하지 않으면 '포함' 관계로 설계해야 함.
3. 포함관계 (has-a 관계)
포함관계는 한 객체가 다른 객체를 구성 요소로 가지는 관계를 의미한다. 상속과 다르며, "~은 ~를 갖는다"로 해석된다.
class Service {
private Logger logger;
public Service(Logger logger) {
this.logger = logger;
}
void process() {
logger.log("처리 시작");
}
}
4. 상속과 포함관계의 구분 기준
- 상속: 개념의 확장 관계
- 포함: 구성 요소 관계
포함관계를 상속으로 잘못 표현하면 클래스 간 결합도가 높아지고, 구조가 복잡해진다. 따라서 설계 시에는 다음 질문을 하는 것이 좋다.
- 이 클래스는 다른 클래스의 한 종류인가?
- 다른 클래스를 구성 요소로 갖는가?
5. 정리
- 상속은 기존 클래스를 확장하는 개념
- 자바는 단일 상속 구조
- 포함관계는 객체를 구성 요소로 포함하는 개념
- 상속과 포함관계는 목적과 의미가 다름
'Java & Spring > Java' 카테고리의 다른 글
| 캡슐화와 접근 제어자 (0) | 2026.01.06 |
|---|---|
| Object 클래스 (0) | 2026.01.06 |
| 생성자&this,this() (0) | 2026.01.06 |
| 메서드 (0) | 2026.01.06 |
| Static (2) | 2026.01.05 |