Java/모두의 자바

Chapter 06-34 메서드 오버로딩

계란💕 2022. 2. 7. 14:15

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