[Java] 상속

2025. 4. 17. 14:20Java

상속

  • 자바 언어에서 인터페이스와 상속 을 통해 객체지향 프로그래밍의 특징 중 하나인 다형성을 구현한다.
  • 자바에서 다중 상속은 허용하지 않는다.
  • 자식 객체를 생성하면 부모 객체가 먼저 생성된 후 자식 객체가 생성됨
    • new 자식클래스() → 부모 객체 먼저 생성 → 자식 객체 생성

Override 규칙

  • 부모 메서드와 동일한 선언부(리턴 타입, 메서드명, 매개변수)
  • 접근 제한자는 같거나 더 넓은 범위로 오버라이딩 가능
  • 부모 메서드가 throws하는 예외보다 더 큰 범위의 예외를 선언할 수 없음
    • (ex: 부모가 IOException을 throws하는 경우 자식은 Exception을 throws 할 수 없음)

오브젝트(Object) 클래스

  • 자바의 모든 클래스가 자동으로 상속하는 최상위 부모 클래스, 자동 상속
  • toString(), equals(), hashCode(), getClass() 등의 메소드를 제공

자동 타입 변환 (Upcasting)

  • 자식 클래스의 객체를 부모 클래스 타입으로 변환하는 것
  • 부모 클래스에 정의된 메서드만 사용 가능
Parent parent = new Child();  // 자동 타입 변환
parent.parentMethod();       // 부모 클래스 메서드 호출 가능
// parent.childMethod();     // 자식 클래스 메서드 호출 불가

강제 타입 변환 (Downcasting)

  • 부모 클래스 타입을 자식 클래스 타입으로 변환하는 것
  • 강제 타입 변환 전 instanceof 연산자로 변환 가능 여부 확인
Parent parent = new Child();     // 자동 타입 변환
Child child = (Child) parent;    // 강제 타입 변환
child.childMethod();            // 자식 클래스 메서드 호출 가능

동적 바인딩(Dynamic Binding)

  • 실행 시점(런타임)에 호출될 메서드가 결정되는 것
  • 메서드 오버라이딩이 대표적

추상(Abstract) 메서드

  • 메서드의 선언부만 있고 실행 내용이 없는 메서드
  • 자식 클래스에서 반드시 오버라이딩해서 실행 내용을 작성해야 함
  • 추상 클래스가 반드시 추상 메서드를 가질 필요는 없음
  • abstract 키워드로 선언된 메서드 → public abstract void test();

참고자료

'Java' 카테고리의 다른 글

[Java] 컬렉션 자료구조  (1) 2025.04.30
[Java] Multi Thread  (1) 2025.04.29
[Java] 제네릭  (0) 2025.04.29
[Java] 인터페이스  (1) 2025.04.21
[Java] 클래스  (1) 2025.04.16