부모 클래스(슈퍼 클래스) : 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스
자식 클래스(서브 클래스) : 부모 클래스로부터 필드와 메서드를 상속받는 클래스
상속을 사용하는 이유
- 공통으로 사용되는 속성 혹은 기능을 상위 클래스에 정의하여 공유함으로써 중복 코드를 줄일 수 있다.
상속
- 자식클래스는 1개의 부모클래스만 상속받을 수 있다.
- 부모 클래스로부터 상속받은 필드나 메서드를 접근할때는 super 키워드를 사용한다.
- 자식 객체에서 기능을 호출시 자식 객체에서 해당 기능이 있는지 찾고 찾지못한다면 부모 객체에서 찾는다.
- 자바의 모든 클래스는 최상위 클래스인 Object클래스를 상속받는다.
- 자식 클래스의 인스턴스 생성시 부모 인스턴스도 같이 생성된다.
- 자식 인스턴스 생성시 부모 생성자가 호출된다.(하지만 기본 생성자는 생략 가능 -> 자바에서 자동으로 만들어 주기 때문)
메서드 오버라이딩을 하는 이유
- 부모 클래스의 메서드를 자식 클래스에서 재정의함으로써 다형성을 구현할 수 있다.- 부모 클래스의 메서드가 자식 클래스의 요구사항에 맞지 않은 경우 자식 클래스에서 해당 메서드를 재정의 할 수 있다.
메서드 오버라이딩 조건
- 메서드 이름이 같아야 한다.
- 메서드 매개변수(파라미터) 타입, 순서, 개수가 같아야 한다.
- 반환타입이 같아야 한다.
- 상위 클래스의 메서드보다 더 많은 체크 예외를 선언할 수 없다.
- final 메서드는 재정의를 금지한다.
- 부모 클래스의 메서드보다 접근제어자가 제한적이어서는 안된다.
(ex)
부모클래스 : protected, 자식클래스 : private, default -> 불가능
부모클래스 : protected , 자식클래스 : public, protected -> 가능
접근 제어자 이론 문제
https://rnwns2.tistory.com/145
접근 제어자 실습 문제