- 부모 클래스(슈퍼 클래스): 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스
- 자식 클래스(서브 클래스): 부모 클래스로부터 필드와 메서드를 상속받는 클래스
상속과 메모리 구조
- 상속 관계의 객체를 생성하면 그 내부에는 부모와 자식이 모두 생성된다.
- 상속 관계의 객체를 호출할 때, 대상 타입을 정해야 한다. 이 때 호출자의 타입을 통해 대상 타입을 찾는다.
- 현재 타입에서 기능을 찾지 못하면 상위 부모 타입으로 기능을 찾아서 실행한다. 기능을 찾지 못하면 컴파일 오류가 발생한다.
상속과 메서드 오버라이딩
- 메서드 오버라이딩(Overriding): 부모에게서 상속 받은 기능을 자식이 재정의 하는 것
- 메서드 오버로딩: 메서드 이름이 같고 파라미터가 다른 메서드를 여러개 정의하는 것
메서드 오버라이딩 조건
- 메서드 이름: 메서드 이름이 같아야 한다.
- 메서드 파라미터: 파라미터 타입, 순서, 개수가 같아야 한다.
- 반환 타입: 반환 타입이 같아야 한다.단, 반환 타입이 하위 클래스 타입일 수 있다.
- 접근 제어자: 상위 클래스의 메서드보다 더 제한적이어서는 안된다.
- 예외: 상위 클래스의 메서드보다 더 많은 체크 예외를 throws로 선언 할 수 없다.
- static, final, private: 키워드가 붙은 메서드는 오버라이딩 될 수 없다.
- 생성자 오버라이딩: 생성자는 오버라이딩 할 수 없다.
super - 부모 참조
부모와 자식의 필드명이 같거나 메서드가 오버라이딩 되어 있으면, 자식에서 부모의 필드나 메서드를 호출할 수 없다. 이때 super 키워드를 사용하면 부모를 참조할 수 있다.
super - 생성자
상속 관계를 사용하면 자식 클래스의 생성자에서 부모 클래스의 생성자를 반드시 호출해야 한다.(규칙) 단, 기본 생성자인 경우 생략할 수 있다.
final이 붙은 클래스와 메서드는 상속 및 오버라이딩을 할 수 없다.
출처 - 김영한의 실전 자바 기본편
'Backend > Java' 카테고리의 다른 글
다형성 활용 (0) | 2024.08.07 |
---|---|
다형성(Polymorphism) (0) | 2024.08.06 |
자바 메모리 구조와 static (0) | 2024.08.03 |
패키지와 캡슐화 (0) | 2024.08.03 |
절차 지향 프로그래밍 vs 객체 지향 프로그래밍 (0) | 2024.08.02 |