상속
상속의 정의와 장점
- 상속이란 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
class Child extends Parent { // 상속받고자 하는 클래스의 이름을 키워드 'extneds'와 함께 써줌
// ...
}
- 조상 클래스 : 부모(parent)클래스, 상위(super) 클래스, 기반(base) 클래스
- 자손 클래스 : 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스
- 자손 클래스는 조상 클래스의 멤버를 모두 상속받지만(영향을 줌) 자손 클래스가 변경되는 것은 조상 클래스에 영향을 주지 않음
- 생성자와 초기화 블럭은 상속되지 않음. 멤버만 상속됨.
(접근 제어자가 private/default인 멤버들은 상속은 받지만 자손 클래스로부터의 접근이 제한되는 것)
- 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많음
- 같은 내용의 코드를 하나 이상의 클래스에 중복적으로 추가해야 하는 경우에는 상속관곌르 이용해서 코드의 중복을 최소화해야 함
- 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성됨
클래스간의 관계 - 포함관계
- 상속이외에도 클래스를 재사용하는 방법 --> 클래스 간의 포함관계를 맺어줌
> 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것
클래스간의 관계 결정하기
- 상속관계/포함관계를 구분할 때는 '~은 ~이다(is-a)'와 '~은 ~을 가지고 있다(has-a)'를 넣어서 문장을 만들어보면 됨
상속관계 : '~은 ~이다. (is-a)'
포함관계 : '~은 ~을 가지고 있다. (has-a)'
- 프로그램의 모든 클래스를 분석하여 가능한 많은 관계르 ㄹ맺도록 노력해서 코드의 재사용성을 높여야 함
- 오버라이딩 : 조상 클래스에 정의된 메서드와 같은 메서드를 자손 클래스에 정의하는 것
예제7-2
출처 : <자바의 정석>, 남궁 성
'JAVA > JAVA' 카테고리의 다른 글
[자바의 정석] 8. 예외처리(Exception Handling) (0) | 2020.03.30 |
---|---|
[자바의 정석] 7-2. 오버라이딩(overriding) (0) | 2020.03.16 |
[자바의 정석] 3-5 생성자 (0) | 2020.03.11 |
[자바의 정석] 3-4 오버로딩(overloading) (0) | 2020.03.11 |
[자바의 정석] JVM의 메모리 구조 (0) | 2020.03.11 |