상속: 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
- 사용 방법
새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 써준다.class Child extends Parent { //... }
이 두클래스를 서로 상속관계에 있다고 한다.
- 조상클래스
: 상속해주는 클래스
부모(parent)클래스, 상위(super)클래스, 기반(base)클래스- 자손클래스
: 상속받는 클래스
자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스
class Parent {
int age;
}
class Child extends Parent {
void play() {
System.out.println("놀자~");
}
}
- 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다.
- 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다.
- 자손클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성된다.
포함관계 맺기 전
class Circle { int x; int y; int r; } class Point { int x; int y; }
포함 관계를 맺은 후
class Circle { Point c = new Point(); int r; } class Point { int x; int y; }
포함관계 vs 상속관계 정의하기
- 상속관계 : '~은 ~이다(is-a)'
- 포함관계 : '~은 ~을 가지고 있다.(has-a)'
다른 객체지향언어인 C++은 다중상속이 가능하지만 자바에서는 단일상속만 지원한다.
object 클래스는 모든 클래스 상속계층도의 최상위에 있는 조상클래스이다.
- 컴파일 전 작성코드
class TV { //... }
- 컴파일 후 코드
class TV extends Object { //... }