Notice
Recent Posts
Recent Comments
Link
drexqq
[Java, 자바] Overloading(오버로딩) 본문
728x90
반응형
Java의 Overloading에 대해서 알아보자.
자바에서 다형성을 지원하는 방법은 오버로딩(Overloading)과 오버라이딩(Overriding) 2가지로 볼 수 있다.
오버로딩(Overloading)과 오버라이딩(Overriding) 이름이 굉장히 비슷해서 헷갈리기 쉽다.
그 중 오버로딩(Overloading)에 대해서 알아보겠다.
오버로딩(Overloading) : 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
오버로딩(Overloading)은 메소드 오버로딩과 생성자 오버로딩이 있지만 둘 다 같은 개념이라고 보면 쉽겠다.
같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 한다.
package overload;
public class mainClass {
public static void main(String[] args) {
/*
Overload - 함수명은 같고 매개변수의 자료형이나 인수의 갯수가 다른 것을 의미한다.
ex) parseInt ...
image drawing -> 알파(투명), 불투명
imageDraw(int x, int y, int a)
imageDraw(int x, int y)
*/
int num1 = Integer.parseInt("123");
int num2 = Integer.parseInt("1010", 2);
System.out.println(num1);
System.out.println(num2);
/*
C언어
unsigned = 0 ~ 255
signed byte = -128 ~ 127
*/
funcName();
funcName('A');
funcName(123);
funcName('B',456);
funcName(78,'C');
}
/*
결론적으로 말하면 메소드 오버로딩은 매개변수를 사용한다.
즉 *매개변수*가 다르면 이름이 같아도 서로 다른 메소드가 되는 것이다.
반면에 매개변수는 같지만 *리턴타입*이 다르면 오류가 발생한다.
메소드의 반환값은 메소드를 호출하는 시점에서 전달되지 않는 정보이기 때문에 오버로딩의 대상이 될 수 없다.
*/
/*
return값x
가인수가 다르게 되도 자료형이 같으면 같은 함수로 인식
*/
// overload 예제
static void funcName() {
System.out.println("funcName() 호출");
}
static void funcName(char c) {
System.out.println("funcName(char c) 호출"+c);
}
static void funcName(int i) {
System.out.println("funcName(int i) 호출"+i);
}
static void funcName(char c, int i) {
System.out.println("funcName(char c, int i) 호출"+c+","+i);
}
static void funcName(int i, char c) {
System.out.println("funcName(int i, char c) 호출"+i+","+c);
}
}
예제와 같이 funcName이라는 함수 여러개를 선언했지만 각각 파라미터값을 다르게해서 다른 값을 호출할 수 있게 되는것이다.
728x90
반응형
'Back-End > Java' 카테고리의 다른 글
[Java, 자바] Overriding(오버라이딩) (0) | 2020.06.03 |
---|---|
[Java, 자바] OOP(Object Oriented Programming) (0) | 2020.06.01 |
[Java, 자바] BufferedReader, BufferedWriter (0) | 2020.05.29 |
[Java, 자바] 함수(function, method), 가변인수 (0) | 2020.05.27 |
[Java, 자바] Sorting(정렬) - 선택 (0) | 2020.05.26 |
Comments