티스토리 뷰

프로그래밍/Java

자바 ! 메소드 오버로딩

나는연어다 2017. 4. 23. 17:36

메소드 오버로딩이란 ? 

같은 이름의 함수에 매개변수를 다르게 사용하여 매개 변수에 따라 다른 함수가 실행되는 것입니다.



메소드 오버로딩을 사용함으로써 메소드의 이름을 절약하여 프로그램의 가독성을 높여줍니다.



예제를 통해 메소드 오버로딩에 대해 알아보도록 하겠습니다.


메소드 오버로딩을 사용하는 B 클래스

public class B {
	// 메소드 오버로딩
	// 메소드의 이름을 중복해서 선언하는 것
	// 단, 매개변수의 타입(종류)와 갯수, 순서가 달라야 한다.
	
	// 오버로딩 기법을 사용하는 경우
	// 메소드가 매개변수에 따라서 의미가 비슷한 작업을 진행 할 때
	
	// ex) System.out.printls();
	// char 형태 출력 메소드명 : System.out.printChar(char ch);
	// int 형태 출력 메소드명 : System.out.printInt(int i);
	// boolean 형태 출력 메소드명 : System.out.printBoolean(boolean b);

	void foo() {
		System.out.println("B_FOO()");
	}

	// 메소드의 이름이 똑같지만 매개변수가 다르기 때문에 선언 가능(오버로딩)
	void foo(int num) {
		System.out.println("B_Foo(int) : " + num);
	}

	// 매개변수의 종류가 다르기 때문에 오버로딩 가능
	void foo(double d) {
		System.out.println("B_Foo(double) : " + d);
	}

	// 매개변수의 갯수가 다르기 때문에 오버로딩 가능
	void foo(int num1, int num2) {
		System.out.println("B_Foo(int, int) : " + num1 + " " + num2);
	}

	// 매개변수의 순서가 달라도 오버로딩 가능
	void foo(int num, double d) {
		System.out.println("B_Foo(int, double) : " + num + " " + d);
	}

	void foo(double d, int num) {
		System.out.println("B_Foo(double, int) : " + d + " " + num);
	}
	
	// 매개변수의 변수명은 오버로딩 가능 조건에 포함되지 않는다.
//	void goo(int num1) {
//		System.out.println("B_GOO(int) : " + num1);
//	}
//
//	void goo(int num2) {
//		System.out.println("B_GOO(int) : " + num2);
//	}
}



메소드 오버로딩의 사용

public class ExampleOverloading {
	public static void main(String[] args) {
		B b = new B();
		
		// 메소드의 이름을 중복해서 선언하는 것
		// 단, 매개변수의 타입(종류)와 갯수, 순서가 달라야 한다.
		
		b.foo(); 		// 매개변수가 없는 foo()메소드
		b.foo(3.14);	// 실수를 매개변수로 받는 foo(double num)메소드
		b.foo(4);		// 정수 1개를 매개변수로 받는 foo(int num) 메소드
		b.foo(3, 3.14);	// 정수 1개와 실수 1개 를 매개변수로 받는 foo(int num1, double num2) 메소드
		b.foo(4, 4);	// 정수 2개를 매개변수로 받는 foo(int num1, int num2) 메소드
	}
}


반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
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
글 보관함