Java

클래스의 재사용

M9M9 2020. 9. 15. 01:27

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 포함관계