본문 바로가기

Programming/JAVA

is a 와 has a 의 관계

3. Is a , Has a 관계


기존의 클래스의 특성을 가지는 새로운 클래스를 만드는 방법은 크게 2 가지가 있다.


기존의 클래스를 상속받아 만드는 방법과 기존의 클래스를 클래스 멤버로 가지는 방법이다.


첫번의 방법을 Is a , 관계라 하고 두 번째의 방법을 has a 라고 한다.


이 개념을 명확히 해서 클래스 설계에 적용하면 고민하지 않고 상속과 멤버의 결정을 내릴 수 있다.


사람
학생 군인 회사원
대학생 고등학생 중학생


3.1 Is a 관계

이 방법은
“ 새로운 클래스가 기존의 클래스의 한 종류이다.(is a)”
“ New Object is a type of a original class.”
라는 말이다.
이 개념이 성립하면 새로운 클래스는 기존의 클래스를 extends 를 사용해 상속 받아만든다.
사람의 경우를 보자.


학생은 사람의 특징을 나타낸다. ” 학생은 사람이다.” 이 말이 성립한다.


그러므로 학생 클래스를 만들 때 사람 클래스를 상속 받아 만든다.

3.2 has a 관계

이 방법은
“ 새로운 클래스가 기존의 클래스를 포함한다.(has a)”
“ One object has a reference to another object”
라는 말이다. 학급이라는 클래스를 만든다고 생각해 보자.

학급에는 선생님, 학생, 주번이라는 멤버 변수가 있을 수 있다.


학급은 학생을 포함하고 있다.


그러므로 학급이라는 클래스를 만들 때는 학생을 상속받는 것이 아니라 학생을 멤버 변수로 포함한다.