자바의 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. 을 붙여 상속받은 클래스의 메소드, 변수를 사용할 수 있다