오버로딩 조건
-매개변수 개수
void simpleFunc(int i)와 void simpleFunc(int i1, int i2)는 오버로딩된다.
-매개변수 타입
void simpleFunc(int i)와 void simpleFunc(String s)는 오버로딩된다.
-반환형은 오버로딩 조건이 아님
void simpleFunc(int i)와 int simpleFunc(int i)는 오버로딩 불가하다.
this를 통한 생성자 오버로딩
class Person{
private int regiNum;
private int passNum;
Person(int rNum, int pNum){
regiNum = rNum;
passNum = pNum;
}
Person(int rNum){ //생성자 오버로딩
this(rNum,0); //처음 생성자를 this를 통한 호출
}
Person(){ //생성자 오버로딩2
this(0,0); //처음 생성자를 this를 통한 호출
}
void showPersonInfo(){
System.out.println("주민번호: "+regiNum);
if(passNum!=0){
System.out.println("여권번호: "+passNum+'\n');
}
else{
System.out.println("여권이 없습니다"+'\n');
}
}
}
public class ConOverloading {
public static void main(String[] args) {
Person jeon = new Person(123456,11111111);
Person kim = new Person(123123);
Person park = new Person();
jeon.showPersonInfo();
kim.showPersonInfo();
park.showPersonInfo();
}
}
주민번호: 123456
여권번호: 11111111
주민번호: 123123
여권이 없습니다
주민번호: 0
여권이 없습니다
위에서 사용된 this는 "오버로딩 된 다른 생성자"를 의미한다. 그리고 this를 통하여 위의 경우처럼 생성자 오버로딩을 진행함에 있어 중복된 코드를 줄이는 효과를 가져올 수 있다.
this의 또다른 사용
이건 C++에서 사용하던 this의 의미와 같은 경우이다. 위에선 this가 오버로딩된 다른 생성자를 의미했다면 여기서 this는 특정 인스턴스를 가리키는데 사용한다.
class AAA{
private int data;
AAA(int data){ //인스턴스 변수와 매개변수의 이름이 같은 경우
this.data = data; //this를 통한 구분
}
}
자세한 설명은 생략한다.
'Java' 카테고리의 다른 글
Java- 콘솔 입출력 (0) | 2022.12.27 |
---|---|
Java- 문자열 결합의 최적화(StringBuilder 클래스) (0) | 2022.12.27 |
Java- main 메소드 (0) | 2022.12.26 |
Java- 클래스 변수와 클래스 메소드, static (0) | 2022.12.25 |
Java- 접근 지시 제어자 (0) | 2022.12.24 |