본문 바로가기
Java

Java_메서드 오버로딩, 가변 길이 인자

by 히예네 2023. 1. 27.
728x90
반응형

메서드 오버로딩

오버로딩 : 파라미터값만 다르게 받는 메서드

 

만약.... 

print()기능으로 여러가지 자료형을 출력하고 싶다면 ?

오버로딩을 활용하여 여러가지 자료값을 받아보도록 하자!

 

ex)

Main 

public class Main {
public static void main(String[] args) {
	
	Test t=new Test();
	
	t.show();
	t.show(1, 2);
	
}
	
}

Test class

public class Test {


	void show() {
		System.out.println("매개변수 없음");
		System.out.println();
	}
	

	
	void show(int x, int y) {
		System.out.println("매개변수 있음!!!");
		System.out.println("a+b = "+(x+y));
	}
}

Test 클래스 안에 메소드 모양을 잘 보자.

메소드 이름은 같지만 파라미터 값이 다르게 들어간다! 

 

출력결과

 

왜쓰냐고 ??

오버로딩이 아니면 메소드 이름을 다 다르게 만들어야한다.

너무 불편하니까 오버로딩을 잘 활용하자. 


가변 길이 인자(or 가변인자)

파라미터 개수가 몇개인지 모를때 사용한다. 

 

메소드를 호출 할 때 파라미터의 개수가 가변적으로 사용되는 경우에 사용한다.

... 연산자를 활용한다

 

Main

public class Main {

public static void main(String[] args) {
	
	cal.add(5,3,4,5,6);
}
}

add의 파라미터가 몇개인지모른다면 ?? (지금은 5개이지만 다음은 예측하기 어려운상황) 


Calculator클래스

public class Calculator {

		void add(int... ns) {
			//ns는 배열객체가 됨
			System.out.println("전달 받은 데이터 개수 : "+ns.length);
			
			for(int t:ns) {
				System.out.print(t+" , ");
			}
			System.out.println();
		}
}

...연산자로 파라미터를 써준다.  

... : 가변 길이 인자로 인식해라.

 

출력결과

5개 받았고 그 값까지 잘나온다. 

 

 

※복합선언

void test(String name, int ... v)

하나의 자료형만 가변인자취급 

 

728x90
반응형

'Java' 카테고리의 다른 글

Java_인스턴스멤버와 Static(정적멤버)  (0) 2023.01.28
Java_자바의 메모리  (0) 2023.01.27
Java_패키지  (0) 2023.01.27
Java_접근제한자  (0) 2023.01.27
Java_객체 지향 프로그래밍 OOP  (0) 2023.01.27