1 minute read

상속

  • 다른 클래스의 멤버(필드, 메서드)를 새 클래스가 자신의 멤버처럼 사용할 수 있는 기능
  • 클래스의 재사용, 연관된 클래스들에 대한 공통적인 규약 정의
  • 코드를 공통으로 관리하기 때문에 코드의 추가 및 변경 용이
  • 코드의 불필요한 중복 방지, 프로그램의 생산성 향상
  • 모든 클래스는 Object클래스의 자식클래스
  • 부모클래스의 생성자, 초기화 블록은 상속 불가
  • 부모클래스의 private멤버는 직접 접근 불가
  • 자바는 단일 상속만 지원
  • extends 키워드 사용
접근제한자] class 클래스명 extends 클래스명 {
    // ...
}

public class Child extends Parent {
    // ...
}

super() / super.

1) super()

  • 부모 객체의 생성자를 호출하는 메서드
  • 자식 클래스 생성 시 자동으로 존재
  • 매개변수가 있는 부모생성자 호출 시 super(매개변수, 매개변수) 사용
  • 명시적 작성 시 첫 줄에만 작성 가능

2) super.

  • 상속을 통한 자식 클래스 정의 시 해당 자식 클래스의 부모 객체를 가리키는 참조 변수
  • 자식 클래스 내에서 부모 클래스 객체에 접근하여 필드나 메서드 호출 시 사용

오버라이딩(Overriding)

  • 자식 클래스에서 상속 받은 부모 클래스의 메서드를 재정의
  • 재정의 시 자식 클래스의 메서드가 우선권 우위
  • 메서드 헤드라인 위에 Annotation / @Override 작성
@Override
public String toString() {
    return "Book [title=" + title + ", author=" + author + ", price=" + price + "]";
}

오버라이딩 / 오버로딩

오버라이딩 오버로딩
하위 클래스에서 메서드 정의 같은 클래스에서 메서드 정의
매개 변수 동일 매개 변수 상이
자식 메서드 접근 범위 >= 부모 메서드 접근 범위 무관
자식 메서드 예외 수 < 부모 메서드 예외 수 무관

오버라이딩, 오버로딩 이름 왜 이렇게 비슷하게 지었어요..?


Categories:

Updated: