기존의 클래스를 재사용하여 새로운 클래스를 작성하는 상속이라는 것에 대해 알아 보겠습니다.
□ 현실 세계:
- 부모가 자식에게 물려주는 행위
- 부모가 자식을 선택해서 물려줌
□ 객체 지향 프로그램:
- 자식(하위, 파생) 클래스가 부모(상위) 클래스의 멤버를 물려 받는 것
- 자식이 부모를 선택해서 물려 받는 것
- 상속 대상: 부모의 필드와 메서드
→ 자손 클래스는 조상 클래스의 모든 멤버를 상속 받는다.
(단, 생성자와 초기화 블럭은 상속되지 않는다.)
→ 자손 클래스의 멤버 개수는 조상 클래스 보다 항상 같거나 많다.
□ 상속의 효과
- 부모 클래스를 재사용해 자식 클래스 개발이 빠라진다.
- 반복된 코드 중복을 줄일 수 있다.
- 유지 보수 편리성을 제공한다.
- 객체 다형성 구현이 가능하다.
□ 상속 대상 제한
- 부모 클래스의 private 접근 갖는 필드와 메소드는 제외된다.
- 부모 클래스가 다른 패키지에 있을 경우, default 접근 갖는 필드와 메서드 제외
□ extends 키워드
- 자식 클래스가 상속할 부모 클래스를 지정하는 키워드이다.
- 자바는 단일 상속 - 부모 클래스 나열이 불가하다.
▲ extends를 이용해 자손클래스가 조상 클래스에게 상속 받은 것이다.
□ 자식 객체 생성하면 부모 객체도 생성 되는가?
□ 명시적인 부모 생성자 호출
부모 클래스에 기본(매개변수 없는 ) 생성자가 없다면 필수로 작성해야 한다.
▲ 조상(부모) 생성자를 호출 시에 지켜야 하는 사항을 지켜 생성자를 호출한다.
(this와 함께 올 수 없다는 것이 중요하다.)
추가!
Object 클래스는 모든 클래스의 조상이다. (자바의 최상위 클래스)
클래스로부터 상속 받지 않는 모든 클래스들은 자동으로 Object 클래스로부터 상속받을 수 있다.
마지막으로 상속에서 기억해 두어야 하는 것들을 정리해 본다면,
자손 클래스에 새로운 코드가 추가되어도 조상 클래스는 아무런 영행도 받지 않는다.
자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많아야 한다.
extendx를 기술하여 상속관계를 맺어줄 수 있다.
여러 개의 부모 클래스를 상속할 수 없다는 것이며, 단 하나의 부모 클래스만 와야한다. (단일상속)