본문 바로가기

# 02/Java

[윤성우의 열혈자바] 11-1. 메소드의 오버로딩

반응형

오버로딩 관련 피해야할 애매한 상황


class AAA {

void simple ( int p1, int p2 ) { ... }

void simple ( int p1, double p2 ) { ... }

}


다음과 같이 모호한 상황을 연출하지 않는 것이 좋다!!


AAA inst = new AAA();

inst.simple( 7, 'k' );    // 어떤 메소드가 호출될 것인가?


-> 첫 번째 메소드가 호출된다. 이유는 'k' 는 char 형 이므로 double, int 로 모두 자동형변환 가능하지만

char 은 int 형과 더 가까우므로 첫 번째 simple 메소드가 호출된다!!

따라서 모호한 방법 보다는 (int) 'k' 또는 (double) 'k' 이런 식으로 정확하게 형변환 시켜주는 편이 낫다.







키워드 this를 이용한 다른 생성자의 호출


class Person {

private int regiNum;        // 주민등록 번호

private int passNum;        // 여권 번호


Person ( int rnum, int pnum ) {

regiNum = rnum;

passNum = pnum;

}


person ( int rnum ) {

regiNum = rnum;

passNum = 0;

}


void showPersonalInfo() { ... }

}



person ( int rnum ) {

this ( rnum, 0 );

}


rnum 과 0 을 인자로 받는 오버로딩 된 다른 생성자 호출, 중복된 코드를 줄이는 효과!



반응형