Java & Spring/Java

상속(Inheritance)이란

승주우에요 2026. 1. 6. 21:13

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