참고 출처: https://opentutorials.org/course/1223/6088
1. 오버로딩이란
메서드 이름은 같지만 서로 다른 매개 변수 형식을 가지는 여러 개의 메서드를 정의할 수 있는 방법을 말한다.
자바는 메서드의 이름이 같다 하더라도 매개변수의 숫나나 데이터 타입이 다르다면 다른 메서드로 인식한다.
println() 메서드를 예로 들 수 있다.
2. 장점
계산기에서 1+2 를 계산하는 메서드가 있다.
그러나 1+2+3 을 계산하고 싶다면 입력 인자를 3개를 가지는 메서드를 만들어야 할것이다.
오버로딩을 하지 않는다면, 매개변수의 수에 따라 메서드 이름이 달라져야 하며 이를 신경써서 구현하고 사용해야 하지만
오버로딩을 사용하면 이런 문제를 해결할 수 있다.
3. 조건
매개변수는 다르지만 리턴타입은 같아야 한다.
리턴값이 다르다면, 리턴값이 없는 메서드를 호출한 것인지 리턴값이 int형인 메서드를 호출한 것인지 알 수 없기 때문이다.
4. 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | class Calculator{ int left, right; int third = 0; public void setOprands(int left, int right){ System.out.println("setOprands(int left, int right)"); this.left = left; this.right = right; } public void setOprands(int left, int right, int third){ System.out.println("setOprands(int left, int right, int third)"); this.left = left; this.right = right; this.third = third; } public void sum(){ System.out.println(this.left+this.right+this.third); } public void avg(){ System.out.println((this.left+this.right+this.third)/3); } } public class CalculatorDemo { public static void main(String[] args) { Calculator c1 = new Calculator(); c1.setOprands(10, 20); c1.sum(); c1.avg(); c1.setOprands(10, 20, 30); c1.sum(); c1.avg(); } } // 실행 결과 // setOprands(int left, int right) // 30 // 15 // setOprands(int left, int right, int third) // 60 // 30 | cs |
5. 사전적 의미
"overloading(과부하)"의 의미와 "loading(짐싯기)"을 통해 오버로딩은 같은 이름의 메서드에 다른 매개변수를 여러개 싣는다라는 뜻으로 볼 수 있다.
'Java' 카테고리의 다른 글
static과 final (0) | 2018.08.20 |
---|---|
직렬화 (Serialization) (0) | 2018.08.04 |
Overriding (오버라이딩, 재정의) (0) | 2018.07.28 |
String, StringBuffer, StringBuilder (0) | 2018.07.17 |
Scanner와 BufferedReader (0) | 2018.07.17 |