자바[Java] 클래스 상속

김담희·2021년 9월 14일
0

JAVA

목록 보기
10/12
post-thumbnail

기존의 클래스를 재사용하여 새로운 클래스를 작성하는 상속이라는 것에 대해 알아 보겠습니다.

상속(Inheritance)이란?

□ 현실 세계:

 - 부모가 자식에게 물려주는 행위

 - 부모가 자식을 선택해서 물려줌

□ 객체 지향 프로그램:

 - 자식(하위, 파생) 클래스가 부모(상위) 클래스의 멤버를 물려 받는 것

 - 자식이 부모를 선택해서 물려 받는 것

 - 상속 대상: 부모의 필드와 메서드

→ 자손 클래스는 조상 클래스의 모든 멤버를 상속 받는다.
(단, 생성자와 초기화 블럭은 상속되지 않는다.)

→ 자손 클래스의 멤버 개수는 조상 클래스 보다 항상 같거나 많다.


상속(Inheritance) 개념의 활용

□ 상속의 효과

 - 부모 클래스를 재사용해 자식 클래스 개발이 빠라진다.

 - 반복된 코드 중복을 줄일 수 있다.

 - 유지 보수 편리성을 제공한다.

 - 객체 다형성 구현이 가능하다.

□ 상속 대상 제한

 - 부모 클래스의 private 접근 갖는 필드와 메소드는 제외된다.

 - 부모 클래스가 다른 패키지에 있을 경우, default 접근 갖는 필드와 메서드 제외

□ extends 키워드

 - 자식 클래스가 상속할 부모 클래스를 지정하는 키워드이다.
 
  - 자바는 단일 상속 - 부모 클래스 나열이 불가하다.




▲ extends를 이용해 자손클래스가 조상 클래스에게 상속 받은 것이다.


부모 생성자 호출(super(...))

□ 자식 객체 생성하면 부모 객체도 생성 되는가?

  • 부모 없는 자식은 없다.
    (자식 객체 생성할 때는 부모 객체부터 생성 후 자식 객체 생성 / 부모 생성자 호출 완료 후 자식 생성자 호출)

□ 명시적인 부모 생성자 호출

  • 부모 객체 생성할 때, 부모 생성자 선택해서 호출해야 한다.

  • super(매개값, ...) : 매개값과 동일한 타입, 개수, 순서에 맞는 부모 생성자를 호출해야 한다.
  • 부모 생성자 없다면 컴파일 오류가 발생한다.
  • 반드시 자식 생성자의 첫 줄에 위치해야 한다.
  • 부모 클래스에 기본(매개변수 없는 ) 생성자가 없다면 필수로 작성해야 한다.


▲ 조상(부모) 생성자를 호출 시에 지켜야 하는 사항을 지켜 생성자를 호출한다.
(this와 함께 올 수 없다는 것이 중요하다.)



추가!

Object 클래스는 모든 클래스의 조상이다. (자바의 최상위 클래스)

클래스로부터 상속 받지 않는 모든 클래스들은 자동으로 Object 클래스로부터 상속받을 수 있다.


마지막으로 상속에서 기억해 두어야 하는 것들을 정리해 본다면,

  • 자손 클래스에 새로운 코드가 추가되어도 조상 클래스는 아무런 영행도 받지 않는다.

  • 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많아야 한다.

  • extendx를 기술하여 상속관계를 맺어줄 수 있다.

  • 여러 개의 부모 클래스를 상속할 수 없다는 것이며, 단 하나의 부모 클래스만 와야한다. (단일상속)

0개의 댓글