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().부모클래스메소드() 이용