Java

Java 기초 정리 - 상속(Inheritance)

chungmani 2026. 6. 11. 21:05

상속이란?

기존 클래스를 확장(재사용)하여 새로운 클래스를 만드는 것!

자식 클래스는 부모 클래스의 멤버를 상속받아 사용할 수 있다.

단, 생성자(Constructor)초기화 블록은 상속되지 않는다.

따라서 자식 클래스는 부모 클래스가 가진 기능을 물려받고, 필요한 기능을 추가할 수 있다.

특징

  • 부모 클래스의 멤버를 재사용할 수 있다.
  • 코드의 중복을 줄일 수 있다.
  • 자식 클래스의 멤버 수는 부모 클래스보다 항상 같거나 많다.
class Area {
    int w; // 가로 길이
    int d; // 세로 길이
}

class Square extends Area {
    int h; // 높이
}

 


포함(Composition)

포함이란 클래스 안에 다른 클래스의 객체를 멤버 변수로 선언하는 것을 말한다.

class Area {
    int w; // 가로 길이
    int d; // 세로 길이
}

class Square {
    Area area = new Area();
    int h; // 높이
}

위 코드에서 Square 클래스는 Area 객체를 가지고 있으므로 포함 관계이다.

 

 

출처 : chungmani


클래스 간의 관계 결정하기

클래스를 설계할 때 자주 고민하게 된다.

"상속을 사용할까?"
"포함을 사용할까?"

예시)

상속

class Square extends Area {
    int h;
}

포함

class Square {
    Area area = new Area();
    int h;
}

상속과 포함 구분하는 방법

문장으로 만들어 보면 이해하기 쉽다.

상속 관계 (is-a)

"~은 ~이다"

사각형은 도형이다.
강아지는 동물이다.

이런 관계라면 상속을 고려할 수 있다.

 

포함 관계 (has-a)

"~은 ~을 가지고 있다"

자동차는 엔진을 가지고 있다.
사람은 심장을 가지고 있다.

이런 관계라면 포함이 더 적절하다.

 

대부분은 포함을 사용한다

실무에서도 상속보다 포함을 더 많이 사용하는 편이다.

상속은 부모와 자식이 강하게 연결되기 때문에 구조가 복잡해질 수 있다.

그래서 관계가 애매하다면 포함을 먼저 고려하는 것이 좋다.


상속의 특징

다중 상속은 불가능

자바는 하나의 클래스만 상속받을 수 있다.

class Child extends Parent {
}

가능

class Child extends Parent1, Parent2 {
}

불가능


Object 클래스

Object 클래스는 모든 클래스의 최상위 부모 클래스이다.

class Tv {
}

위 코드는 사실 아래 코드와 동일하다.

class Tv extends Object {
}

자바의 모든 클래스는 Object 클래스를 자동으로 상속받는다.

 

 

Object 클래스의 주요 메서드

Object 클래스에는 여러 유용한 메서드가 존재한다.

대표적으로

  • equals()
  • toString()
  • hashCode()

등이 있다.

우리가 만드는 모든 클래스는 Object를 상속받기 때문에 이러한 메서드들을 사용할 수 있다.