Java에서 클래스를 재사용할 수 있는 방법은 2가지가 있다.
첫째, 상속
둘째, 클래스 간의 포함관계를 맺어주는 것이다.
이 중 포함관계에 대해 정리해보겠다.
포함관계
클래스간의 포함관계를 맺어주는 것으로
여기서 포함관계란 한 클래스 안에 다른 클래스의 타입의 참조 변수를 선언하는 것을 말한다.
먼저 코드를 살펴보겠다.
class Cicle{
int x;
int y;
int r;
}
class Point{
int x;
int y;
}
class와 Point클래스가 있다.
그런데 이 코드를
class Cicle{
Point center = new Point();
int r;
}
class Point{
int x;
int y;
}
Circle클래스의 x, y 인스턴스 변수를 Point 클래스의 인스턴스로 대체하였다.
이렇게 Circle 클래스에 Point 클래스의 인스턴스를 생성하여 포함관계를 맺을 수 있다.
그렇다면 여기서
class Cicle extends Point{
int r;
}
class Point{
int x;
int y;
}
Circle이 Point클래스를 상속받은 것과 포함관계로 point 참조 변수를 선언한 것과 차이점은 무엇인가?
결과적으로는 차이가 없다.
이럴 때는 ~은 ~이다(is-a)(상속) , ~은 ~을 가지고있다(has-a)(포함관계)를 사용해서 무엇을 사용할지 정한다.
Circle is a Point - 원은 점이다.
Circle has a Point - 원은 점을 가지고 있다.
문법상 has-a 관계가 더 적정하다.
그러면 포함관계를 사용하면 된다.
만약 Shape 클래스가 있으면
Cirecle is a Shape -원은 도형이다.
Circle has a Shape -원은 도형을 가지고 있다.
이때는 is-a 관계가 더 적절하다.
이럴때는 extends를 사용하여 상속을 사용하면 된다.
is-a 상속
has-a 포함관계
'Java' 카테고리의 다른 글
생성자 (0) | 2020.09.15 |
---|---|
객체지향 프로그래밍 (0) | 2020.09.14 |
JVM (0) | 2020.09.13 |
자바의 특징 (0) | 2020.09.13 |