JAVA 상속(Inheritance)

강효림·2023년 4월 15일
0

JAVA

목록 보기
5/19

상속(extends)이란?

부모클래스에서 만들어진 필드, 메소드들을 자식클래스가 사용할 수 있도록 물려주는 것

그럼 상속을 하면 뭐가 좋은가요?

  • 클래스의 간결화
    동일한 특성을 재정의할 필요가 없어 클래스구조들이 간결해진다.
  • 클래스 관리 용이
    클래스들이 계층적으로 분류되어서 관리하기 편하다.
  • 소프트웨어의 생산성 향상
    클래스를 재사용하고 확장하는데 용이하며 새 클래스 작성 속도가 빠르다.

상속 선언

public class Transportation{
...
}
public class Bus extends Transportation{
...
}

부모클래스 == 슈퍼클래스(super class) == 상위클래스
자식클래스 == 서브클래스(sub class) == 하위클래스

상속의 특징

  • 클래스 다중 상속을 지원하지 않는다.

    public class Bus extends Transportation, Transfer{
    ...
    }

  • 상속 횟수는 무제한이다.

    public class Bus extends Transportation{
    ...
    }
    public class Subway extends Transportation{
    ...
    }

  • 상속의 최상위에 존재하는 클래스는 java.lang.Object 클래스
    모든 클래스는 자바 컴파일러에 의해 자동으로 java.lang.Object 클래스를 상속받기 때문에 선언할 필요가 없다.

  • 수직간의 상속만 가능하고 수평간의 상속은 불가능하다.


접근 지정자

  • public
    모든 클래스의 접근 허용
  • protected
    같은 패키지 내의 클래스만 접근가능
    만약 다른 패키지에 있더라도 super class의 protected멤버는 접근 가능함
  • default
    같은 패키지 내 클래스만 접근 가능
  • private
    super class 외에 다른 모든 클래스 접근 불가

서브, 슈퍼클래스의 생성자 호출 및 실행

Q : 서브클래스에서 객체가 생성될 때 서브클래스의 생성자와 슈퍼클래스의 생성자중 누가먼저 실행되나요? 아니면 객체가 생성되는 서브클래스만 실행이 되나요?
A : 둘 다 실행이 됩니다. 실행 순서는 슈퍼클래스의 생성자가 먼저 실행되고 다음에 서브클래스의 생성자가 실행이 됩니다. 호출은 서브클래스가 슈퍼클래스를 호출합니다.

Q :원하는 슈퍼클래스 생성자를 선택하지 않으면 자동으로 기본생성자를 찾는데 서브클래스에서 어떻게 슈퍼클래스의 생성자를 선택하나요?
A : super(슈퍼클래스 생성자의 매개변수) 를 사용하면됩니다.

super() 가 뭔가요?

서브클래스에서 명시적으로 슈퍼클래스의 생성자를 호출할 수 있게합니다.
반드시 서브클래스 생성자 코드의 가장 첫번째 라인에 와야합니다.
그렇지 않으면 호출이 되지 않습니다.

사용방법

super(parameter);

0개의 댓글