IT 개발노트
상속 본문
1. 상속(inheritance)
1.1 상속의 정의와 장점
- 상속이란 ?
-> 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것.
-> 두 클래스를 조상과 자손으로 관계를 맺어주는 것.
-> 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외)
-> 자손의 멤버개수는 조상보다 적을 수 없다.(같거나 많다.)
class 자손클래스 extends 조상클래스 {
// ...
}
1.2 클래스간의 관계
- 상속관계(inheritance)
-> 공통부분은 조상에서 관리하고 개별부분은 자손에서 관리한다.
-> 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다.
- 포함관계(composite)
-> 포함이란?
--> 한 클래스의 멤버변수로 다른 클래스를 선언하는 것
--> 작은 단위의 클래스를 먼저 만들고, 이 들을 조합해서 하나의 커다란 클래스를 만든다.
1.3 클래스간의 관계결정하기 - 상속 vs 포함
- 가능한 한 많은 관계를 맺어주어 재사용성을 높이고 관리하기 쉽게 한다.
- 'is-a'와 'has-a'를 가지고 문장을 만들어 본다.
상속관계 : '~은 ~이다. (is-a)'
포함관계 : '~은 ~을 가지고 있다.(has-a)'
1.4 단일상속(single inheritance)
- Java는 단일상속만을 허용한다.(C++은 다중상속 허용)
class TVCR extends TV, VCR { // 이와 같은 표현은 허용하지 않는다.
//...
}
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
1.5 Object클래스 - 모든 클래스의 최고조상
- 조상이 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
- 상속계층도의 최상위에는 Object클래스가 위치한다.
- 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
(toString(), equals(Object obj), hashCode(), ...)