6장 오버로딩

slee2·2021년 9월 5일
0

Java의 정석

목록 보기
8/28
post-thumbnail
post-custom-banner

오버로딩

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

void	println()
void	println(boolean x)
void	println(char x)
void	println(char[] x)
void	println(double x)
void	println(float x)
void	println(int x)
void	println(long x)
void	println(Object x)
void	println(String x)

오버로딩이 성립하기 위한 조건

  • 메서드 이름이 같아야 한다.
  • 매개변수의 개수 또는 타입이 달라야 한다.
  • 반환 타입은 영향없다.
int	add(int a, int b) {return a + b;}
int	add(int x, int y) {return x + y;}

이름만 바뀌고 타입이 똑같다 오버로딩 x
add(int, int) is already defined // 이미 정의되어 있다.

int	add(int a, int b) {return a + b;}
long	add(int a, int b) {return (long)(a + b);}

반환타입은 영향이 없으므로 오버로딩 X
add(int, int) is already defined // 이미 정의되어 있다.

long	add(int a, long b) {return a + b;}
long	add(long a, int b) {return a + b;}

오버로딩 O, long add(3, 3)으로 하면 에러가 나온다.(둘중 어느것인지 컴파일러가 판단을 못함)

예제

class	Mymath3 {
	int	add(int a, int b) {
    	System.out.println("int add(int a, int b) - ");
       	return a+b;
    }
    long	add(long a, long b) {
    	System.out.print("long add(long a, long b) - ");
       	return a+b;
    }
    int	add(int[] a) {
    	System.out.pirnt("int add(int[] a) - ");
       	int result = 0;
       	for(int i=0; i < a.length;i++)
       		result += a[i];
       	return result;
    }
}
post-custom-banner

0개의 댓글