JAVA
[Java] 오버로딩, 오버라이딩
미소서식지
2023. 6. 19. 15:29
오버라이딩
부모로부터 상속받은 메소드의 내용을 자식 클래스에서 다시 재정의하는 것
오버라이딩 조건
- 메소드 이름 같아야
- 메소드 파라미터 개수와 데이터 타입 같아야
- 리턴 타입 같아야
- 부모의 것보다 접근 제어자가 이상이어야
오버라이딩 불가 조건
- 부모 메소드 접근 제어자가 private일 때
- private 접근 제어자는 오직 자기 자신의 클래스 내부에서만 사용가능하기 때문에 오버라이딩 불가
- 부모 메소드가 final 키워드로 선언되어 있을 때 (상속 불가)
- final 클래스 : 자식 클래스를 만들 수 없음 (상속 불가)
- final 메소드 : 자식 클래스에서 오버라이딩 불가
- final 변수 : 값을 변경할 수 없음 (상수)
오버로딩
한 클래스 내에서 같은 메소드 이름으로 파라미터 달리 해서 메소드 내용 여러 개 정의하는 것
비슷한 기능
오버로딩 조건
- 메소드 명 같아야
- 메소드 파라미터의 개수, 데이터 타입, 순서 달라야
- 메소드 리턴 타입이 다르다고 해서 다른 메소드로 쳐주지 않음
- 메소드의 이름과 매개변수 개수, 타입으로 구분짓기 때문에 return타입이 다르다고 해서 오버로딩이 성립되지는 않습니다.
오버라이딩 어노테이션을 쓰는 이유
https://team00csduck.tistory.com/11
JAVA_(Annotation) @Override는 왜 쓰는 걸까?
오버라이딩을 하다 보면 가끔 이런 걸 본다. ... @Override public studyJava() { //대충 내용이 있다. } ... 상단의 코드에서 오버라이딩을 하다가 @Override를 생략해도 위의 메서드가 정상적으로 실행된다는
team00csduck.tistory.com
부모 클래스의 메소드 쓰고 싶다면
super().부모클래스메소드() 이용