-
[Java] this 키워드로 생성자 호출IT/개발(자바, 서블릿, 스프링 등) 2019. 12. 9. 18:10
생성자
인스턴스를 초기화하는 역할.
개발자가 하나 이상의 생성자를 만들지 않으면, 컴파일러가 기본 생성자를 만들어준다.
기본 생성자의 접근 제한자는 클래스의 접근 제한자를 따른다.
this 키워드
자신을 가리키는 키워드 this.
this는 현재 실행중인 인스턴스의 주솟값을 나타낸다.
생성자를 통해서 인스턴스를 초기화할 때 아래와 같이 두가지 방법으로 할 수 있다.
첫번째 방법에선 중복이 많이 보인다.
객체지향 프로그램은 최대한 중복된 코드를 제거하고 코드를 재사용하는 방법으로 구현한다.
소스코드를 더 쉽게 이해할 수 있고 쉽게 수정할 수 있도록 변경하는 것을 '리팩토링'이라고 한다.
중복을 제거하기 위해 두번째 코드에선 리팩토링을 진행했다.
public Class User{ priavate String name; private int age; public User(){ this.name = "user"; this.age = 0; } public User(String name){ this.name = name; this.age = 0; } public User(String name, int age){ this.name = name; this.age = 22; } }
public Class User{ priavate String name; private int age; public User(){ this("user"); } public User(String name){ this(name, 0); } public User(String name, int age){ this.name = name; this.age = age; } }
JVM이 소스에 작성된 변수를 찾을 때 현재 실행 중인 메서드의 스택 프레임을 우선 검색한다.
이때 다른 메서드의 프레임은 검색 대상이 되지 않는다.
스택에서 변수를 찾으면 해당 변수를 사용하고, 찾지 못하면 this가 참조하는 인스턴스의 필드에서 검색한다.
만일 찾으려는 변수가 필드에도 없으면 에러가 발생한다.
'IT > 개발(자바, 서블릿, 스프링 등)' 카테고리의 다른 글
[Java] final 키워드 개념 정리 (0) 2019.12.09 [Java] 상속 개념과 사용법 그리고 super() 문으로 부모 인스턴스 초기화하는 방법 (0) 2019.12.09 [Java] 정적 멤버 개념 (static 키워드 개념) (0) 2019.12.09 [Java] 자바의 메모리 구조 정리 (0) 2019.12.07 [Java] 클래스 객체 인스턴스 용어 정리 (0) 2019.12.07