is-A vs has-A

정민주·2026년 5월 16일

is-A vs has-A

is-A 관계

is-A는 “A는 B의 한 종류다” 라고 말할 수 있는 관계이다.
주로 상속에서 사용된다.

예시:

  • 강아지는 동물이다.
  • 자동차는 탈것이다.
class Dog extends Animal {
}

has-A 관계

has-A는 “A는 B를 가지고 있다” 라고 말할 수 있는 관계이다.
주로 객체를 필드로 포함할 때 사용된다.

예시:

  • 자동차는 엔진을 가지고 있다.
  • 컴퓨터는 CPU를 가지고 있다.
class Car {
    private Engine engine;
}

인터페이스 vs 추상클래스

추상클래스

추상모 클래스이다.
is-A 관계가 자연스러울 클래스는
공통 속성과 기능을 물려주기 위한 부때 사용한다.

abstract class Animal {
    void eat() {
        System.out.println("먹는다");
    }

    abstract void sound();
}

인터페이스

인터페이스는 반드시 구현해야 할 기능 규칙을 정하는 것이다.
can-do 관계, 즉 “~할 수 있다” 가 자연스러울 때 사용한다.

interface Flyable {
    void fly();
}

0개의 댓글