본문 바로가기

JAVA/JAVA

[자바의 정석] 7-1 상속

상속

상속의 정의와 장점

- 상속이란 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것

class Child extends Parent {  // 상속받고자 하는 클래스의 이름을 키워드 'extneds'와 함께 써줌
     // ...
}

- 조상 클래스 : 부모(parent)클래스, 상위(super) 클래스, 기반(base) 클래스
- 자손 클래스 : 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스

- 자손 클래스는 조상 클래스의 멤버를 모두 상속받지만(영향을 줌) 자손 클래스가 변경되는 것은 조상 클래스에 영향을 주지 않음

- 생성자와 초기화 블럭은 상속되지 않음. 멤버만 상속됨.
  (접근 제어자가 private/default인 멤버들은 상속은 받지만 자손 클래스로부터의 접근이 제한되는 것)
- 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많음

- 같은 내용의 코드를 하나 이상의 클래스에 중복적으로 추가해야 하는 경우에는 상속관곌르 이용해서 코드의 중복을 최소화해야 함

- 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성됨

 

클래스간의 관계 - 포함관계

- 상속이외에도 클래스를 재사용하는 방법 --> 클래스 간의 포함관계를 맺어줌
 > 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것

 

클래스간의 관계 결정하기

- 상속관계/포함관계를 구분할 때는 '~은 ~이다(is-a)'와 '~은 ~을 가지고 있다(has-a)'를 넣어서 문장을 만들어보면 됨

상속관계 : '~은 ~이다. (is-a)'
포함관계 : '~은 ~을 가지고 있다. (has-a)'

- 프로그램의 모든 클래스를 분석하여 가능한 많은 관계르 ㄹ맺도록 노력해서 코드의 재사용성을 높여야 함

- 오버라이딩 : 조상 클래스에 정의된 메서드와 같은 메서드를 자손 클래스에 정의하는 것

예제7-2

 

 

 

출처 : <자바의 정석>, 남궁 성