새벽코딩

[JAVA] 오버로딩(feat. this) 본문

JAVA

[JAVA] 오버로딩(feat. this)

J 코딩 2023. 2. 25. 09:56
반응형

안녕하세요 J코딩입니다.

오늘은 JAVA의  Overloading과 this 키워드에 대해 공부해 봅시다.

1. 메소드 오버로딩

메소드 오버로딩을 간단히 설명하자면 동일한 이름의 메소드를 둘 이상 정의 할 수 있는 자바의 문법입니다.

오버로딩을 정의 할때에는 매개변수의 선언형태를 다르게 한 메소드를 정의하면 됩니다.
이는 매개변수의 형(type) 이 다르거나 개수를 다르게 하는 것을 뜻합니다.


위 소스를 보시면 같은 클래스에 동일한 이름의 메소드들이 정의 되어져있습니다.
또한, 해당 메소드들은 각각의 매개변수의 개수가 다른 것을 확인할 수 있습니다.
첫번째는 한개, 두번째는 두개 그리고 세번째는 세개의 매개변수가 정의 되어있죠.


a라는 인스턴스를 생성하였고 AAA클래스의 메소드를 끌어다가 사용합니다.
근데 사용하고 있는 메소드의 이름이 모두 같죠?
보시면 isYourFunc()메서드를 호출할때 데이터 개수에 따라 다른 메서드를 호출하고 있는 걸 알 수있습니다..

메소드 오버로딩을 하는데 몇가지 규칙이 있습니다.

1. 반환형이 같아야 합니다.


메소드의 형(type) 이 int와 double 인게 보이 실 겁니다. 이렇게 메소드의 반환형이 다르면 오버로딩이 성립되지 않습니다.(매개변수의 형이아니고 메소드의 형입니다)

2. 생성자도 오버로딩의 대상이 됩니다.


다음의 경우처럼 두개의 같은 이름의 생성자를 정의 하였는데 각각 매개변수의 개수가 다릅니다.
이때 매개변수가 두개인 인스턴스를 생성하면 위의 생성자가 호출되고, 매개변수가 한개인 인스턴스를 생성하면 아래의 생성자가 호출되어집니다.


2. this키워드

this 키워드는 생성자를 정의 할때 !


오버로딩은 다음과 같이 반복어지는 매개변수를 정의 합니다.
하지만 유사한 매개변수를 계속 해서 정의 한다는 것이 우리에게는 같은 일을 반복하는 것 처럼 답답할 수 있습니다.

그런 경우에 this키워드를 이용하여 정의 할 수 있습니다.

일단 생성자에서는 위에 선언한 매개변수와 같은 매개변수로 접근을 할수 없다는 걸 알고 있으셔야 합니다.


요게 불가능 하다는 이야기죠 이런 경우에서 this 키워드를 사용해 봅시다.


위와같이 this키워드를 사용할 수 있습니다.
참고로 이 키워드는 메서드에 들어오는 매개변수와 현재 클래스의 지역변수의 이름이 동일할때 사용됩니다.

이걸 아까 언급한 여러개의 매개변수를 정의하는 생성자에 사용한다면 다음과 같아집니다.


위의 소스처럼 this키워드를 사용하여 인스턴스 변수에 접근을 할 수 있습니다.

만약 위의 두번째 생성자에 this키워드가 없었다면

this.per = p;
this.mil = 0;
birthYear = bYear;
birthDay = bDay;

이런식의 호출을 했어야 할 것 입니다.

네 여기까지 자바 메소드 오버로딩과 this키워드 였습니다.

(오래전 포스팅 끌어올리기)

-새벽코딩-

반응형

'JAVA' 카테고리의 다른 글

[JAVA] 배열과 리스트  (0) 2023.02.26
[JAVA] try~catch  (0) 2023.02.23
[JAVA] 입력 (Scanner vs BufferedReader)  (2) 2022.11.13
Comments