상속이란?
기존 클래스를 확장(재사용)하여 새로운 클래스를 만드는 것!
자식 클래스는 부모 클래스의 멤버를 상속받아 사용할 수 있다.
단, 생성자(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 객체를 가지고 있으므로 포함 관계이다.

클래스 간의 관계 결정하기
클래스를 설계할 때 자주 고민하게 된다.
"상속을 사용할까?"
"포함을 사용할까?"
예시)
상속
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를 상속받기 때문에 이러한 메서드들을 사용할 수 있다.
'Java' 카테고리의 다른 글
| Java 기초 정리 - 추상 클래스(abstract class)와 팩토리 메서드 (0) | 2026.06.15 |
|---|---|
| JAVA 기초정리 - 다형성 (Polymorphism) (0) | 2026.06.12 |
| JAVA 기초정리 - 다형성과 예외처리 (0) | 2026.06.09 |
| JAVA 기초 정리 - 객체지향 (final, 인터페이스, 캡슐화, 상속) (0) | 2026.06.08 |
| JAVA 기초 정리 - static과 인스턴스 멤버란? (0) | 2026.06.05 |