객체지향 프로그래밍을 공부하다가 오버로딩이라는 단어를 심심치않게 접했었다. 그렇게 들어오던 오버로딩에 대해 오늘 공부했기 때문에 오버로딩에 대해 정리를 해보겠다.
오버로딩은 간단히 말하면, 같은 이름의 메서드를 여러개 정의하는 것이다.
1. 메서드의 이름이 같고
2. 메서드 안의 매개변수의 개수 혹은 타입이 달라야 한다.
오버로딩의 대표적인 예를 찾아보면 println이 있다.
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
매개변수의 타입에 따라 오버로딩 된 println중 타입에 맞게 선택되어 실행되는것이다.
println이라는 간단한 매개변수로 개념을 이해했으면
간단한 add라는 더하기 메서드로 예시를 만들어보자
package test;
public class MymathTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
myMath mm = new myMath();
System.out.println("mm.add(3,3) 결과:" + mm.add(3, 3));
System.out.println("mm.add(30L,30L) 결과:" + mm.add(30L, 30L));
}
}
class myMath{
int add(int a, int b)
{
System.out.println("int add(int a, int b) - ");
return a+b;
}
long add(long a, long b)
{
System.out.println("int add(long a, long b) - ");
return a+b;
}
}
같은 add메서드이지만 매개변수의 타입이 다르기에 다음과 같은 결과가 나타난다.
주의할점은 리턴타입은 오버로딩에 영향을 주지 않는다는 것이다.
오버로딩을 하는 이유는 무엇일까?
println의 예시에서 쉽게 찾을 수 있다.
사실 여러 메서드들이 비슷한, 아니 동일한 역할을 하는데 입력받는 매개변수의 타입만 다른 경우, 하나의 이름으로 정의 할 수 있다는 것이다.
'CS' 카테고리의 다른 글
브라우저 렌더링 과정 (google.com을 입력하면?) (0) | 2023.09.22 |
---|---|
MIPS-Instruction (0) | 2021.10.05 |
자바 Cannot make a static reference to the non-static field 오류 (0) | 2021.09.27 |
자바 객체,클래스,메소드 (C와 비교) (0) | 2021.09.23 |
포인터 기초: Swap함수 (0) | 2021.09.21 |