본문 바로가기

Java

Java- 메소드 오버로딩과 this

오버로딩 조건

 -매개변수 개수

  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