JAVA-is a 관계와 has a 관계

김동규·2022년 11월 8일
0

JAVA

목록 보기
30/38

IS A Relation

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

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

사람은 동물이다.
소는 동물이다
새는 동물이다.
위와 같은 관계를생각하자. 즉, 일반 클래스를 구체화 하는 상황에서 상속을 사용한다.

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

예시 코드

public class Human extends animal{
	boolean canFly;
    int life;
	Human(boolean canFly,int life){
    	this.canFly = canFly;
        this.life = life;
    }
}

HAS A Relation

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

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

대부분 IS A 가 성립하지않은경우 HAS A 일 가능성이 크다.

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

ex) 메모리는 컴퓨터이다?->
Memory is Computer? 😵Nope
Computer has Memory ? 🤝Good

예시 코드

public class Computer{
	public static void main(String[] args){
    	Memory memory = new Memory();
        memory.run();
    }
}
profile
HigasiHosi

0개의 댓글