06-34. 1 메서드 오버로딩이란?
Ded) 메서드 오버로딩: 매개변수의 수가 다르거나 형이 다른 경우 같은 이름으로 메서드를 여러 개 정의할 수 있다.
Ex 1) 정수를 두개 받아 두 정숫값을 더해서 리턴하는 메서드
<hide/>
package javaStudy;
public class MyClass2 {
public int plus(int x, int y) {
return x + y;
}
}
- 리턴하는 값이 정수이므로 반환자료형은 int, 메서드명은 plus라고 만들었다.
- 매개변수는 int x, int y 를 선언.
- 두 값을 더해서 리턴한다.
Ex 2) 정수를 세 개 받아서 세 정숫값을 더한 뒤 리턴하는 메서드
<hide/>
package javaStudy;
public class MyClass2 {
public int plus(int x, int y, int z) {
return x + y + z;
}
}
- 매개변수 int x, y, z 를 더해서 리턴한다.
Ex 3) 문자열을 세 개 받아서 두 문자열을 결합한뒤 리턴하는 메서드
<hide/>
package javaStudy;
public class MyClass2 {
public String plus(String x, String y) {
return x + y;
}
}
- 두 문자열을 입력 받아 붙인 뒤 반환한다.
- Ex 1)부터 Ex 3)까지 똑같은 이름(plus)으로 메서드를 세 개를 정의했다.
- 이를 "메서드 오버로딩"이라고 한다.
- 메서드 오버로딩에서는 자료형과 매개변수의 수가 중요하다.
- 메서드1과 메서드2은 자료형은 같지만 매개변수의 수가 다르기 때문에 가능하다.
- 메서드1과 메서드3은 매개변수의 수는 같지만 자료형이 달라서 가능하다.
06-34.2 오버로딩된 메서드 사용하기
Ex)
<hide/>
package javaStudy;
public class MethodOverloadExam {
public static void main(String[] args) {
MyClass2 m = new MyClass2();
System.out.println(m.plus(4, 5) );
System.out.println(m.plus(4, 6, 7) );
System.out.println(m. plus("hello", "world" ) );
}
}
Note) 출력 결과: 9 , 17, helloworld
- 이렇게 비슷한 일을 하지만 매개변수의 개수나 자료형이 다르면 똑같은 이름으로 메서드를 정의해 사용할 수 있다.
06-34.3 메서드 오버로딩 실습 ) Car클래스에는 매개변수를 받지 ㅇ낳고 반환값이 없는 run 메서드가 만들어졌다.
변수명은 speed, int형 매개 변수를 한 개 받고 반환자료형은 없고 메서드를 실행하면 콘솔에
"speed km으로 달립니다."라고 출력하는 run 메서드를 추가하라.
Ex)
<hide/>
package javaStudy;
public class Car{
public void run() {
System.out.println("차가 달립니다.");
}
public void run(int speed) {
System.out.println("차가 "+ speed + "km로 달립니다." );
}
}
<hide/>
package javaStudy;
public class CarExam {
public static void main(String[] args) {
Car car = new Car();
car.run();
car.run(100);
}
}
Note)
- 같은 이름으로 매개변수를 다르게 정의하는 것을 오버로딩이라고 한다.
- 매서드 이름을 다르게 정의한다면 차가 그냥 달릴 때와 정해진 속도로 달릴 때
- 다른 이름의 메서드를 이용해야 하므로 경우에 따라 메서드를 각각 학습해야 한다.
- 하지만 메서드 이름을 같게 정의하면 차가 그냥 달리든지 정해진 속도로 가든지
- 달리기 위해 run이라는 메서드만 떠올리면 된다.
- 메서드 오버로딩의 대표적인 예로는println()이 있다.
- 이 메서드는 다양한 매개 변수, 즉 int, char, String등 기본 자료형과 그 외 자료형으로 오버로딩된다.
- 어떤 자료형이든 상관없이 println() 메서드를 사용할 수 있는 이유이다.
'Java > 모두의 자바' 카테고리의 다른 글
Chapter 06-36 패키지 (0) | 2022.02.07 |
---|---|
Chapter 06-35 생성자 오버로딩과 this (0) | 2022.02.07 |
Chapter 06-33 this (0) | 2022.02.07 |
Chapter 06-32 생성자 (0) | 2022.02.07 |
Chapter 05-31 열거형(Enum) (0) | 2022.02.06 |