자바 this, super 차이 알아보기

by 조쉬 posted Feb 15, 2023
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

 

자바의 this부터 먼저 알아보자면 왼쪽 스크린샷에서 

클래스 영역의 변수 value는 10으로 주고

ThisSuperTest 를 객체화하면서 파라미터에는 1을 넣어 줬는데

 

생성자에서 이 1을 value로 받아 사용하기에

실제 value를 호출해보면 클래스 영역에 정의한 10이 호출되는 것이 아니라

파라미터로 넣은 1이 호출이 된다

 

이제 우측의 스크린샷을 보면 동일한 이름의 value 변수여도

this. 를 붙여주면 클래스 영역에 정의한 value 변수를 호출해서

10이 호출되는 것이 보인다

 

즉 this.는 동일한 이름의 변수가 사용될 경우

클래스 영역에서 정의한 변수를 식별하기 위해 사용한다는 것!

 

 

 

다음으로는 super인데

super는 상속받은 메소드나 변수를 호출할 때 사용한다

 

보면 ThisSuperTest에도 call 메소드와 name 변수가 있지만

super. 를 붙이고 메소드와 변수를 호출 시

상속받은 Parent의 call 메소드와 name 변수가 호출되는 것이 보인다

 

간단히 정리해보자면

 

this란? 

클래스 영역에서 정의한 변수와

동일한 이름의 변수가 사용되는 경우

this. 를 붙여 클래스 영역에 정의한 변수를 사용할 수 있다

 

super란?

이미 클래스 내에 동일한 이름의 메소드, 변수가 있어도

super. 을 붙여 상속받은 클래스의 메소드, 변수를 사용할 수 있다