오버로딩 관련 피해야할 애매한 상황
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 을 인자로 받는 오버로딩 된 다른 생성자 호출, 중복된 코드를 줄이는 효과!
'# 02 > Java' 카테고리의 다른 글
[윤성우의 열혈자바] 11-3. String 클래스의 메소드 (0) | 2019.10.21 |
---|---|
[윤성우의 열혈자바] 11-2. String 클래스 (0) | 2019.10.21 |
[윤성우의 열혈자바] 10-4. 또 다른 용도의 static 선언 (0) | 2019.10.21 |
[윤성우의 열혈자바] 10-3. System.out.println() (0) | 2019.10.21 |
[Java] Vector (0) | 2019.10.19 |