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 |