Java์ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ(Method Overloading)์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์๋ก ๋ค๋ฅธ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ผ๋ก ์ ์ํ๋ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ , ๋ค์ํ ์ ๋ ฅ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ๊ธฐ๋ณธ ๊ฐ๋ , ๊ตฌํ ๋ฐฉ๋ฒ, ์ค์ํ ํ์ฉ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ด๋?
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ ์๋ก ๋ค๋ฅธ ๋งค๊ฐ๋ณ์(๊ฐฏ์, ํ์ , ์์)๋ฅผ ๊ฐ์ง ๋ ๊ฐ๋ฅํฉ๋๋ค. Java ์ปดํ์ผ๋ฌ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ ๋ฌ๋ ์ธ์์ ๋ฐ๋ผ ์ ํฉํ ๋ฉ์๋๋ฅผ ์ ํํฉ๋๋ค.
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ์กฐ๊ฑด
- ๋ฉ์๋ ์ด๋ฆ์ด ๋์ผํด์ผ ํฉ๋๋ค.
- ๋งค๊ฐ๋ณ์์ ๊ฐฏ์, ๋ฐ์ดํฐ ํ์ , ๋๋ ์์๊ฐ ๋ฌ๋ผ์ผ ํฉ๋๋ค.
- ๋ฐํ ํ์ ์ ์ค๋ฒ๋ก๋ฉ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
2. ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ ๊ตฌํ
์ค๋ฒ๋ก๋ฉ๋ ๋ฉ์๋๋ ๊ฐ์ ํด๋์ค ๋ด์ ์ ์๋๋ฉฐ, ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ์ฐจ์ด์ ๋ฐ๋ผ ์ปดํ์ผ๋ฌ๊ฐ ์ ์ ํ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
์์ : ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
public class OverloadingExample {
// ๋ ์ ์์ ํฉ ๊ณ์ฐ
public static int add(int a, int b) {
return a + b;
}
// ์ธ ์ ์์ ํฉ ๊ณ์ฐ
public static int add(int a, int b, int c) {
return a + b + c;
}
// ๋ ์ค์์ ํฉ ๊ณ์ฐ
public static double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
System.out.println("๋ ์ ์์ ํฉ: " + add(10, 20)); // add(int, int)
System.out.println("์ธ ์ ์์ ํฉ: " + add(10, 20, 30)); // add(int, int, int)
System.out.println("๋ ์ค์์ ํฉ: " + add(5.5, 3.2)); // add(double, double)
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
๋ ์ ์์ ํฉ: 30
์ธ ์ ์์ ํฉ: 60
๋ ์ค์์ ํฉ: 8.7
3. ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ์ค์ํ ํ์ฉ
3.1 ๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ
๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ์์๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ํ์ฉํ ์ ์์ต๋๋ค.
public class Calculator {
// ์ ์ ๋ง์
public static int calculate(int a, int b) {
return a + b;
}
// ์ค์ ๋ง์
public static double calculate(double a, double b) {
return a + b;
}
// ์ ์ ๊ณฑ์
public static int calculate(int a, int b, boolean isMultiplication) {
return isMultiplication ? a * b : a + b;
}
public static void main(String[] args) {
System.out.println("์ ์ ๋ง์
: " + calculate(10, 20));
System.out.println("์ค์ ๋ง์
: " + calculate(5.5, 3.3));
System.out.println("์ ์ ๊ณฑ์
: " + calculate(10, 20, true));
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
์ ์ ๋ง์
: 30
์ค์ ๋ง์
: 8.8
์ ์ ๊ณฑ์
: 200
3.2 ๋ฌธ์์ด ์ถ๋ ฅ๊ธฐ
๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์์๋ ์ค๋ฒ๋ก๋ฉ์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
public class Printer {
// ๋ฌธ์์ด ์ถ๋ ฅ
public static void print(String text) {
System.out.println("๋ฌธ์์ด: " + text);
}
// ์ ์ ์ถ๋ ฅ
public static void print(int number) {
System.out.println("์ ์: " + number);
}
// ์ค์ ์ถ๋ ฅ
public static void print(double number) {
System.out.println("์ค์: " + number);
}
public static void main(String[] args) {
print("Hello, World!");
print(100);
print(45.67);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
๋ฌธ์์ด: Hello, World!
์ ์: 100
์ค์: 45.67
3.3 ๋ฉด์ ๊ณ์ฐ๊ธฐ
๋ํ์ ๋ฉด์ ์ ๊ณ์ฐํ๋ ๋ฉ์๋์์๋ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ํ์ฉํ ์ ์์ต๋๋ค.
public class AreaCalculator {
// ์ ์ฌ๊ฐํ์ ๋ฉด์
public static int calculateArea(int side) {
return side * side;
}
// ์ง์ฌ๊ฐํ์ ๋ฉด์
public static int calculateArea(int width, int height) {
return width * height;
}
// ์์ ๋ฉด์
public static double calculateArea(double radius) {
return Math.PI * radius * radius;
}
public static void main(String[] args) {
System.out.println("์ ์ฌ๊ฐํ ๋ฉด์ : " + calculateArea(5));
System.out.println("์ง์ฌ๊ฐํ ๋ฉด์ : " + calculateArea(5, 10));
System.out.println("์์ ๋ฉด์ : " + calculateArea(7.5));
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
์ ์ฌ๊ฐํ ๋ฉด์ : 25
์ง์ฌ๊ฐํ ๋ฉด์ : 50
์์ ๋ฉด์ : 176.71458676442586
4. ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
- ๋งค๊ฐ๋ณ์ ์ฐจ์ด: ๋งค๊ฐ๋ณ์์ ๊ฐฏ์๋ ํ์ ์ด ๋ค๋ฅด์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ๋ฐํ ํ์ : ๋ฐํ ํ์ ๋ง ๋ค๋ฅด๊ฒ ์ ์ธํ๋ฉด ์ค๋ฒ๋ก๋ฉ์ผ๋ก ์ธ์๋์ง ์์ต๋๋ค.
- ๊ฐ๋ ์ฑ: ๋ฉ์๋ ์ด๋ฆ์ด ๊ฐ์ผ๋ฏ๋ก ๋งค๊ฐ๋ณ์ ์ฐจ์ด๊ฐ ๋ช ํํด์ผ ๊ฐ๋ ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ์ฝ๋๋ฅผ ๋ ์ ์ฐํ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๋งค๊ฐ๋ณ์์ ์ฐจ์ด์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ์ ์ํ๋ฉด, ๋ค์ํ ๋ฐ์ดํฐ ํ์ ๊ณผ ์๊ตฌ์ฌํญ์ ํจ๊ณผ์ ์ผ๋ก ๋์ํ ์ ์์ต๋๋ค. ์ด๋ฒ ๊ธ์์ ์๊ฐํ ๊ฐ๋ ๊ณผ ์์ ๋ฅผ ๋ฐํ์ผ๋ก ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ํ์ฉํด ๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ