학습 목표
상속 이해
메서드 오버라이딩
supre, super()의 차이
상속 개념 이해
📝 상속
- 하위 클래스가 상위 클래스의 필드와 메서드를 상속받는 것
- 상위 클래스의 경우 하위 클래스가 공통적으로 가질 수 있는 것들을 선언
- extends를 통해 상속을 진행할 수 있음
- 자바는 단일 상속을 지원
class Student extends Human{...}
📝 상속의 특징
- 하위 클래스 멤버의 수는 상위 클래스 멤버의 수와 크거나 같음
- 코드의 재사용성이 향상됨
- 다형적 표현이 가능
- private 접근제어자는 상속하지 않음
- Object 클래스가 최상위 클래스로 상속 클래스가 지정되지 않는 경우 컴파일러가 Object 클래스를 상속시킴
- 부모와 자식이 다른 패키지에 존재하는 경우 default 접근제어자는 상속 불가능 (접근제어자의 범위 문제)
- final 상태의 클래스는 상속이 불가능함
- final 상태의 메소드는 오버라이딩을 통한 재정의 불가능
📝 메서드 오버라이딩
- 상위 클래스의 메서드를 재정의 하는 것
- 상위 클래스의 메서드 선언부 (반환 타입, 이름, 매개 변수)가 동일 해야함
- 상위 클래스의 접근 제어자의 범위보다 하위 클래스의 범위가 크거나 같아야함
- 상위 클래스보다 더 많은 예외처리를 할 수 없음
- 상위 클래스에 2개의 예외처리가 존재하는 경우, 해당하는 2개의 예외에 대해서만 예외처리 가능
📝 super vs super()
- this와 this()의 차이와 유사함.
- super의 경우 상위 클래스를 참조, super()의 경우 상위 클래스의 생성자를 참조
📝 캡슐화
- 특정 객체안에 관련 속성 및 기능을 담아 외부로부터 보호
- 데이터 보호의 목적
- 내부적으로 사용되는 데이터의 불필요한 외부 노출을 방지
- 정보은닉
📝 접근 제어자
- private : 동일 클래스만 허용
- default : 동일 패키지만 허용
- proteced : 동일 패키지 + 하위 클래스 허용
- public : 모두 허용
- 제어자의 경우 접근 제어자, 기타 제어자가 존재하며 여러개의 제어자를 사용할 수 있으나 접근 제어자는 하나만 적용가능