728x90
Overriding과 Overloading은 객체 지향언어에서 다형성을 높여주는 개념입니다.
이름이 비슷해서 비슷하게 생각할 수 있지만 전혀 다른 개념입니다.
[오버로딩(Overloading)]
오버로딩은 동일한 이름의 메소드를 여러개 정의하는 것입니다.
메소드의 이름과 return 타입은 동일하지만, 매개변수의 형(type)이나 개수가 다른 상황입니다.
이렇게 함으로써 다양한 상황에서 메소드가 호출 될 수 있도록합니다.
- 아래와 같이 함수의 이름과 리턴타입은 같지만 매개변수의 개수가 다르므로 오버로딩이 가능합니다.
int sum(int n1, int n2){
int ans = n1+n2;
return ans;
}
int sum(int n1){
int ans = n1+1
return ans;
}
- 다음과 같은 경우는 반환형이 다르기 때문에 오버로딩이 불가능합니다.
int sum(int n1, int n2){ ... }
double sum(int n1, int n2){ ... }
[오버라이딩(Overriding)]
- 상위 클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 동일한 이름의 메서드를 재정의 하는 것입니다.
- 자바에서는 항상 인스턴스의 메서드가 호출됩니다. (가상메서드의 원리)
- 아래와 같은 경우, SuperClass의 func이라는 인터페이스를 통해 SubClass의 func이 실행됩니다.
SuperClass object = new SubClass();
object.func();
'프로그래밍 > 자바(Java)' 카테고리의 다른 글
[ 자바/ JAVA ] 추상클래스(abstract class) (0) | 2021.07.22 |
---|---|
[ 자바 / JAVA ] String, StringBuilder, StringBuffer 클래스 (0) | 2021.07.22 |
[ 자바 / JAVA ] static 키워드(static 변수, static 메소드) (0) | 2021.07.22 |
[ 자바 / JAVA ] 접근제어 지시자(Access Modifier) (0) | 2021.07.22 |
[ 자바 / JAVA ] final 키워드 (0) | 2021.07.20 |