IS-A 관계
•
IS-A 관계는 A는 B이다의 의미로, IS-A 관계는 상속에 의존한다.
•
Java의 클래스 선언에 extends 또는 implement 키워드가 있으면 특정 클래스가 Is-A 관계를 따른다고 볼 수 있다.
•
상속은 주로 추상화된 클래스나 일반 클래스를 구체화하는 관계에서 코드 재사용성을 위해 사용된다.
•
다만 상속을 사용하게 되면 클래스간 결합도가 높아져 상위 클래스를 수정할 때 하위 클래스에 영향이 가는 상황처럼 하위 클래스가 상위 클래스에 종속된다.
•
이러한 이유로 상속은 서로 관련이 있는 개념에서 클래스를 구체화하는 관계에서만 사용되어야 한다.
public class Shape {
private String color;
public void setColor(String color) {
this.color = color;
}
public void getColor() {
return this.color;
}
}
public class Square extends Shape {
public void getColor() {
return Shape.super.getColor();
}
}
Java
복사
HAS-A 관계
•
HAS-A 관계는 A는 B를 가지고있다의 의미로, 포함 관계를 의미한다.
•
Java에서 Has-A 관계는 한 클래스의 인스턴스가 다른 클래스의 인스턴스 또는 동일한 클래스의 다른 인스턴스에 대한 참조를 가지고 있음을 의미한다.
•
다른 클래스를 포함하거나 다른 클래스의 메서드나 변수를 받아들여서 사용한다.
public class Square {
...
}
public class Circle {
...
}
public class Drawing {
private Square square;
private Circle circle;
...
}
Java
복사