ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] IS-A 관계, HAS-A 관계
    JAVA 2020. 6. 30. 21:00

     

    IS-A 관계, HAS-A 관계


    안녕하세요? 장장스입니다.

    IS-A 관계, HAS-A 관계에 대해 알아보겠습니다.

    객체지향 프로그래밍에서 우리는 상속을 사용합니다. 언제 상속을 사용해야 할까요?

     

    IS-A 관계


    상속은 IS-A관계에서 사용하는 것이 가장 효율적입니다.

    IS-A 관계(is a relationship, inheritance)는 일반적인 개념과 구체적인 개념의 관계입니다.

    • 사람은 동물이다.
    • 소는 동물이다
    • 새는 동물이다.

    위와 같은 관계입니다. 즉, 일반 클래스를 구체화 하는 상황에서 상속을 사용합니다.

    상속을 사용하면 많은 장점이 있지만, 하위 클래스가 상위 클래스에 종속되기 때문에 이질적인 클래스 간에는 상속을 사용하지 않는 것이 좋습니다. 단순히 코드를 재사용할 목적으로 서로 관련이 없는 개념의 클래스를 상속 관계로 사용하는 것은 추천하지 않습니다.

     

     

    HAS-A


    HAS-A 관계에서는 상속을 사용하지 않습니다.

    HAS-A 관계(has a relationship, association)는 일반적인 포함 개념의 관계입니다.

    HAS-A 관계는 다른 클래스의 기능(변수 혹은 메서드)을 받아들여 사용합니다.

     

    상속의 잘못된 생각


    상속을 코드 재사용의 개념으로 이해하면 안됩니다. 코드를 재사용할 수 있다고 마구잡이로 잘못 사용하는 경우가 있습니다. 상속을 사용하면 클래스간 결합도가 높아져 상위 클래스를 수정해야 할 때 하위 클래스에 미치는 영향이 매우 큽니다. 때문에 상속은 IS-A 관계에서 사용해야 합니다.

     

     

    References


     


    잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)

     

    'JAVA' 카테고리의 다른 글

    [JAVA] SMTP 메일 이미지 첨부 방법 3가지  (0) 2020.07.04
    [JAVA] 인터페이스 (interface)  (0) 2020.07.04
    [JAVA] 메서드 오버라이딩  (0) 2020.06.27
    [JAVA] 상속에서 클래스 생성과 super  (0) 2020.06.23
    [JAVA] 자바, ArrayList  (0) 2020.06.22

    댓글