본문 바로가기

java

is a has a

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”
라는 말이다. 학급이라는 클래스를 만든다고 생각해 보자.

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


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


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

'java' 카테고리의 다른 글

static에 대한 고찰. 퍼옴.  (0) 2016.04.04
변경불가 리스트 만들기 Collections.unmodifiableList  (0) 2015.06.25
generic 타입 추론.  (0) 2015.05.12
ThreadLocal  (0) 2015.02.25
isAssignableFrom  (0) 2014.12.20