본문 바로가기
✨ Java/etc

자바(JAVA) - this , this() , super , super() 각각 차이점

by 환풍 2023. 7. 18.
728x90
반응형

 

this

 - 현재 객체를 가리키는 참조 변수로, 해당 객체의 인스턴스 멤버(필드, 메서드)에 접근할 때 사용한다.

이렇게 자바에서는 this 참조 변수를 사용해 인스턴스 변수에 접근가능하다.

this 참조 변수를 사용할 수 있는 영역은 인스턴스 메소드 뿐이고, 클래스 메소드에서는 사용할 수 없다.

*static 영역에서도 사용 불가

모든 인스턴스 메소드에는 this 참조 변수가 숨겨진 지역 변수로 존재하고 있다.

this()

 - 같은 클래스의 다른 생성자를 호출하는데 사용한다.

생성자 내부에서만 사용할 수 있으며,

생성자 내에서 다른 생성자를 호출할 때, this()를 사용해 해당 클래스의 다른 생성자를 명시적으로 호출할 수 있다.

이는 생성자 오버로딩 시 코드의 중복을 피하고 재사용성을 높이는데 도움된다.

위의 예제에서 this(0)은 Myclass의 다른 생성자인 MyClass(int value)를 호출하여 초기값 설정.

따라서 this는 현재 객체를 가리키는 참조 변수이고, this()는 같은 클래스의 다른 생성자를 호출하는데 사용한다.

 

super

 - 현재 클래스의 상위 클래스를 가리키는 참조 변수로, 상위 클래스의 멤버(필드, 메서드)에 접근할 때 사용한다.

super를 사용해 부모 클래스의 멤버를 호출하거나 재정의된 메서드를 호출할 수 있다.

super.parentField는 상위 클래스 ParentClass의 parentField필드를 가리킨다.

 

super()

 - 같은 클래스의 상위 클래스의 생성자를 호출하는데 사용된다.

하위 클래스의 생성자에서 super()를 호출하면 상위 클래스의 생성자가 먼저 실행된다.

이를 통해 상위 클래스의 초기화 작업이 완료된 후 하위 클래스의 초기화 작업을 수행할 수 있다.

super()는 ParentClass의 생성자를 호출해 상위 클래스의 초기화 작업을 수행한다.

따라서 super는 현재 클래스의 상위 클래스를 가리키는 참조 변수이고,

super()는 같은 클래스의 상위 클래스의 생성자를 호출하는데 사용된다.

728x90
반응형

댓글