본문 바로가기
🌈 백엔드/객체 지향

JAVA_객체지향_this

by 개발자 알마 2023. 6. 3.
반응형

 

[1] this 


(1) this의 역할

  1. 인스턴스 멤버가 인스턴스 자신의 메모리를 가리킨다 
  2. 인스턴스 멤버가 생성자에서 다른 생성자를 호출할때 사용한다 
  3. 인스턴스 멤버가 자신의 주소를 반환한다 (참조변수) 

현재 클래스의 멤버 변수를 말한다 

 

① 인스턴스 자신의 메모리를 가리킨다

클래스의 속성이름과 매개변수의 이름이 같을때 this를 사용하여 가져온다 

color를 color로 지칭할때 this를 사용한다. 

인스턴스 메서드 내에서만 사용가능하다

 

② 생성자에서 다른 생성자를 호출할때 사용한다 

 

조건 

1. 생성자의 이름으로 클래스이름 대신 this를 사용한다

2. 한 생성자에서 다른 생성자를 호출할때 반드시 첫줄에서만 호출이 가능하다 

 

 

오버로딩된 다른 생성자를 호출할때

자기자신의 생성자를 호출함으로써 초기화 과정을 반복하지 않아도 되고

this(x.y) 처럼 피라미터가 있으면 자기 자신의 클래스에 해당하는 동일한 파라미터 객체를 가진 함수를 호출할수 있다 

 

생성자1이 생성자2에 있는 다른 생성자를 호출한다. 

생성자2에 있는 name 과 age가 생성자1에 있는 kim 과 10 이 대입된다는 것을 알게된다 

public class Person {
	
	String name;
	int age;
	
    // 생성자 1
	Person() {
		this("kim", 10);
	}
	
    // 생성자 2
	Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

 

③ 자신의 주소를 반환한다

 

자신의 참조값을 전달하고 싶을때

어떤 함수에서 리턴값으로 자기자신의 참조값을 전달하고 싶을때 this를 사용한다 

 

  • 인스턴스1과 인스턴스2는 출력시 같은 주소값이 출력된다 
public class Person {
	
	String name;
	int age;
	
    //생성자1
	public Person() {
		this("이름없음", 1);
	}
	
    //생성자2
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
    //함수 내부에 자신의 주소를 가리키는 this 사용 
	public Person getPerson() {
		return this;
	}
	
	public static void main(String[] args) {
		
        //인스턴스1
        Person personA = new Person();
		personA.name = "James";
		personA.age = 37;
		
        //인스턴스2
		Person personB = personA.getPerson();
        
		System.out.println(personA); // 같은주소
		System.out.println(personB); // 같은주소
	}
}
반응형

댓글