AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Java 상속

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Java 개발자 및 객체지향 프로그래밍(OOP) 학습자.

난이도: 중급 (상속, 메서드 오버라이딩, 다형성 등 OOP 핵심 개념 포함)

핵심 요약

  • 상속extends 키워드로 부모 클래스의 속성과 메서드를 자식 클래스가 재사용할 수 있게 하는 기능.
  • 메서드 오버라이딩을 통해 런타임 다형성(런타임 폴리모르피즘)을 구현 가능.
  • 상속 유형: 단일, 계층, 다중 수준, 하이브리드. Java는 인터페이스를 통한 다중 상속만 지원.

섹션별 세부 요약

1. 상속의 정의

  • 상속은 부모 클래스(super-class)의 속성과 메서드를 자식 클래스(subclass)가 물려받는 개념.
  • extends 키워드를 사용하여 상속 관계를 설정.
  • final 키워드로 상속을 금지할 수 있음.

2. 상속의 목적

  • 코드 재사용성: 기존 클래스의 속성 및 메서드를 반복적으로 작성하지 않음.
  • 추상화: 부모 클래스는 구체적인 구현을 제공하지 않고, 자식 클래스가 구현.
  • 메서드 오버라이딩: 자식 클래스에서 부모 클래스의 메서드를 재정의하여 런타임 다형성 구현.

3. 상속 작동 방식

  • extends 키워드로 부모 클래스의 public, protected 필드 및 메서드는 자식 클래스에서 접근 가능.
  • private 필드는 자식 클래스에서 접근 불가.
  • 자식 클래스 객체 생성 시 부모 클래스의 멤버도 포함됨.
  • super()를 통해 부모 클래스의 생성자를 호출 가능.

4. 예제 코드

public class Calculation {
    int z;
    public void addition(int x, int y) { z = x + y; }
}
public class My_Calculation extends Calculation {
    public void multiplication(int x, int y) { z = x * y; }
}
  • 자식 클래스는 부모 클래스의 addition 메서드를 사용 가능.
  • super.eat()을 통해 부모 클래스의 메서드 호출.

5. 상속 유형

  • 단일 상속: 하나의 자식 클래스가 하나의 부모 클래스로부터 상속.
  • 다중 수준 상속: 부모 클래스 → 자식 클래스 → 손자 클래스.
  • 계층 상속: 하나의 부모 클래스가 여러 자식 클래스에 상속.
  • 하이브리드 상속: 단일 및 계층 상속의 조합.
  • 다중 상속: Java는 클래스 기반 다중 상속을 지원하지 않음. 인터페이스를 통해 지원.

6. 다중 상속 제한 이유

  • 다이아몬드 문제(ambiguity): 두 부모 클래스에서 동일한 메서드가 존재할 경우 호출 대상이 모호함.
  • 예:
  • interface Coder { void code(); }
    interface Tester { void test(); }
    class DevopsEngineer implements Coder, Tester { ... }

결론

  • 상속을 통해 코드 재사용성과 다형성을 달성. extends 키워드 사용 필수.
  • 메서드 오버라이딩을 통해 런타임 다형성 구현.
  • Java는 인터페이스를 통한 다중 상속만 지원하며, 클래스 기반 다중 상속은 제한.
  • super()를 통해 부모 생성자 호출, @Override를 사용하여 메서드 오버라이딩 명시.