📌 메서드 오버라이딩이란❓
- 부모클래스에게 상속받은 메서드를 재정의하여 사용 (덮어쓰기 개념)
📌 메서드 오버라이딩을 위한 조건
- 부모클래스의 메서드와 시그너처 및 리턴 타입 동일
- 부모클래스의 메서드보다 접근지정자는 같거나 넓어야 함


📌 메서드 오버라이딩과 접근지정자
- 오버라이딩 시 자식클래스의 메서드 접근지정자는 부모의 접근지정자보다 같거나 커야 함
📌 오버라이딩(Overriding)
- 자식 클래스가 상속 받은 부모 메소드를 재작성 하는 것
- 특징
- 메소드 헤드라인 위에 반드시 @Override 표시
- 접근 제어자를 부모 것보다 같거나 넓은 범위로 변경 가능
- 부모 메소드의 예외처리 클래스 처리범위보다 좁은 범위로 예외처리 클래스 수정 가능
- 성립조건
- 메소드 이름 동일
- 매개변수의 개수, 타입, 순서 동일
- 리턴 타입 동일
- private 메소드 오버라이딩 불가
📌 오버로딩(Overloading)
- 한 클래스 내에서 같은 이름의 메소드를 여러개 정의하는 것
- 성립조건
- 같은 메소드 이름
- 다른 매개변수 선언부(매개변수 타입, 개수, 순서)
- 주의사항
메소드의 리턴타입은 오버로딩 조건과 관계 없음
💬 인트턴스 필드도 오버라이딩이 가능할까❓
👉 ❌ 인스턴스 필드는 오버라이딩이 되지 않음
💬 static 필드도 오버라이딩이 가능할까❓
👉 ❌ static 필드는 오버라이딩이 되지 않음
💬 static 메서드도 오버라이딩이 가능할까❓
👉 ❌ static 메서드는 오버라이딩이 되지 않음
📌 super
- 상속을 통한 자식 클래스 정의 시 해당 자식 클래스의 부모 객체를 가리키는 참조변수 자식 클래스 내에서 부모 클래스 객체에 접근하여 필드나 메소드 호출 시 사용
📌 super()
- 부모 객체의 생성자를 호출하는 메소드로 기본적으로 후손 생성자에 부모 생성자 포함
- 후손 객체 생성 시에는 부모부터 생성이 되기 때문에 후손 클래스 생성자 안에는 부모 생성자를 호출하는 super()가 첫 줄에 존재 (부모 생성자가 가장 먼저 실행되어야 하기 때문에 명시적으로 작성 시에도 반드시 첫 줄에만 작성)
- 매개변수 있는 부모 생성자 호출은 super(매개변수, 매개변수)를 넣으면 됨