728x90
- 오버로딩(Overloading)의 개념
사전상 Overloading의 의미는 '과적(過積)' 을 뜻한다. 자바에서의 Overloading은 한 클래스 안에서 동일한 이름의 메소드를 여러 개 정의하는 것을 의미 하는데, 하나의 이름에 여러 기능이 가능하다고 이해해도 좋을 것 같다. 함수명이 고유해야하는 C 언어와 달리 java는 매개변수의 개수 또는 타입이 다르면, 동일한 이름을 사용해서 메소드를 정의할 수 있다.
우리가 많이 쓰는 println 메소드가 대표적인 오버로딩의 예라고 볼 수 있다. '출력' 기능을 가진 메소드들을 println이라는 이름으로 정의할 수 있다.
- 오버로딩(Overloading)의 조건
- 메소드 이름이 동일해야 한다.
- 매개 변수의 개수 or 타입이 달라야 한다.
- 매개 변수는 같고 리턴 타입이 다른 경우는 오버로딩이 성립되지 않는다. (주의)
- 즉, 오버로딩 메소드들은 매개 변수 차이로만 구별될 수 있다.
class Calc
{
int add(int num1, int num2){
return num1 + num2;
{
int add(int num1){ //이름이 add로 같아도 에러가 나지 않는다
return num1 + 10;
}
}
- 오버로딩을 사용하는 이유
- 편리성 -> 같은 기능을 하는 메소드를 정의할 때 하나의 메소드명으로 다양한 입력값을 받기 위해서
(println 하나면 됐지, printInt printDouble printString 등등을 각각 정의하면 관리가 불편하지 않을까?)
- 오버라이딩(Overriding)과의 차이점
하필 비슷한 이름과 비슷해보이는 생김새 때문에 많이 헷갈리는 개념이다. 하지만 둘은 명백히 다르다.
- 오버로딩 : 하나의 클래스 안에서 / 메소드명은 같지만 기능은 다른 개념
- 오버 라이딩 : 상속 관계 / 상속받은 메소드를 재정의
728x90
'Programming > Java' 카테고리의 다른 글
[Java 객체지향 프로그래밍] 메모리 모델 - JVM (0) | 2021.03.01 |
---|---|
[Java 객체지향 프로그래밍] 생성자 (Constructor) (0) | 2021.02.22 |
[JAVA 객체지향 프로그래밍] 패키지의 개념 (0) | 2021.02.21 |
[Java 객체지향 프로그래밍] 객체와 클래스 (0) | 2021.02.21 |
[Java] 자바빈(JavaBean)에서 프로퍼티(property)와 필드(field)의 차이점? (0) | 2021.02.18 |