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
를 사용하여 메서드 오버라이딩 명시.