오버로딩 vs 오버라이딩

Jiwontwopunch·2022년 2월 23일
0

TIL

목록 보기
43/92
post-thumbnail

오버로딩 Overloading

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

오버로딩의 조건은 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩 할 수 없다.
접근 제어자도 자유롭게 지정해 줄 수 있다. 결국 오버로딩은 매개변수의 차이로만 구현할 수 있다.

오버로딩을 사용하는 이유는
1. 같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있다.
2. 메소드의 이름을 절약할 수 있다.

오버라이딩 Overriding

부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 말한다. 오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.

@Override 어노테이션은 오버라이딩을 검증하는 기능을 한다. 코드상으로 검사했을 때 오버라이딩이 실제로 시행되지 않았다면 컴파일시 오류로 출력한다. 선언부는 부모의 것과 완벽히 동일해야 한다.
1. 자식 클래스에서 오버라이딩하는 메소드의 접근 제어자는 부모 클래스보다 더 좁게 설정할 수 없다.
2. 예외(Exception)는 부모 클래스의 메소드보다 많이 선언할 수 없다.
: 부모 클래스에서 어떤 예외를 throws한다고 하면, 자식 클래스에서는 그 예외보다 더 큰 범위의 예외를 throws할 수 없다.
3. static 메소드를 인스턴스의 메스드로 또는 그 반대로 바꿀 수 없다.

0개의 댓글