본문 바로가기
java

[java] 오버로딩

by 신방동불주먹 2022. 9. 29.

 

오버로딩이란?

한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것.

 

 

오버로딩 특징?

- 자바는 원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없다. 하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있다. 

- 메소드 오버로딩은 서로 다른 시그니처를 갖는 여러 메소드를 같은 이름으로 정의하는 것. 

- 다형성을 구현하는 방법 중 하나. 

- 리턴타입과는 무관하다.

 

 

오버로딩을 사용하는 이유?

1) 같은 기능을 하는 메서드를 하나의 이름으로 사용할 수 있다. 

2) 메서드 이름 절약 가능 

 

* 오버로딩 대표적 함수 : print함수. 

- println() 메서드는 오버로딩 되어있기 때문에 int, string, boolean 인자 등 모두 받아서 동작한다. 

- 오버로딩이 없다면?

int형 인자를 받는 printlnInt(), string 인자를 받는 printlnString() 과 같이 매번 다른 타입을 출력하려면 각 다른 이름의 print 함수가 있어야한다. 

 

 

예시)

public class Overloding {


	void add(){		
	}
		
	void add(int x){ //매개변수의 유무
	}
	
	void add(long l){ //타입의 차이	
	}	
	
	void add(int x, int y){ //갯수의 차이
	}
	
	void add(int x, long i){
	}
	
	void add(long x, int y){ //위치의 차이
	}	
	
//	int add() { //리턴타입이 void, int로 다르지만 오버로딩 불가능하다. 
//	}	
}

 

public class MyMath {
	
	int add(int a,int b) {
		System.out.println("add(int a,int b)");
		return a+b;
	}
	
	long add(long a,long b) {
		System.out.println("add(long a,long b)");
		return a + b;
	}
	
	int add(int[] a) {
		System.out.println("add(int[] a)");
		int result = 0;
		for(int i : a) {
			result += i;
		}
		return result;
	}
	
	
	
}

'java' 카테고리의 다른 글

0929_this. / this()  (0) 2022.09.29
0929_생성자  (0) 2022.09.29
0929_static method  (0) 2022.09.29
0928_최대값 출력 메소드(연습)  (0) 2022.09.28
0928_참조형 변수 (배열 타입)  (0) 2022.09.28