221226 오버로딩과 오버라이딩

Jongleee·2022년 12월 26일
0

TIL

목록 보기
139/737

오버로딩(Overloading)

함수명이 고유한 C언어는 하나의 함수가 하나의 기능만을 구현해야 함
반면, 자바에서는 하나의 메소드 이름으로 여러 기능을 구현 가능

한 클래스 내에 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의가능

오버로딩의 조건

  1. 메소드의 이름 동일
  2. 매개변수의 개수나 타입이 다름
    리턴 값만 다를 때는 오버로딩을 할 수 없음

오버로딩을 사용하는 이유

같은 기능을 하는 메소드를 하나의 이름으로 사용가능
ex)println 메소드의 경우 int, double, boolean, String 등의 아주 다양한 타입의 매개변수로 동일한 기능을 함

오버라이딩(Overriding)

부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것
자식 클래스에서 상황에 맞게 변경해야 하는 경우 사용

오버라이딩의 조건

자식 클래스에서 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 함

@Override
오버라이딩을 검증하는 기능
코드상으로 검사했을 때 오버라이딩이 실제로 시행되지 않았다면 컴파일시 오류를 출력

오버라이딩에서 접근 제어자를 설정하는 규칙

  1. 자식 클래스에서 오버라이딩하는 메소드의 접근 제어자는 부모 클래스보다 더 좁게 설정할 수 없음
  1. 예외(Exception)는 부모 클래스의 메소드보다 많이 선언할 수 없음
  1. static메소드를 인스턴스의 메소드로 또는 그 반대로 바꿀 수 없음
    부모 클래스의 static메소드를 자식에서 같은 이름으로 정의하는 것은 같은 이름의 static메소드를 새로 정의하는 것

비교

오버로딩 - 기존에 없는 새로운 메소드를 추가하는 것

오버라이딩 - 상속받은 메소드를 재정의 하는 것

구분OverridingOverloading
접근 제어자부모 클래스의 메소드보다 더 넓은 범위의 접근 제어자를 자식 클래스의 메소드에서 설정모든 접근 제어자를 사용
리턴형동일상관없음
메소드명동일동일
매개변수동일달라야 함
적용 범위상속관계같은 클래스 내

0개의 댓글