개발공부/Java

[Java] 07. 객체 자신을 가리키는 this / 객체 간의 Collaboration

sangyeon 2021. 11. 22. 22:08
728x90

1. this가 하는 일

- 인스턴스 자신의 메모리를 가리킴

- 생성자에서 또 다른 생성자를 호출할 때 사용

- 자신의 주소(참조값)을 반환 함

 

2. 생성된 인스턴스 메모리 주소를 가짐

- 클래스 내에서 참조변수가 가지는 주소 값과 동일한 주소 값을 가지는 키워드

> this는 참조변수 day와 동일하게 인스턴스의 주소 값을 가리키고 있다.

public void setYear(int year){
   this.year = year;
}

 

3. 생성자에서 다른 생성자를 호출하는 this

- 클래스에 생성자가 여러 개인 경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있다.

- 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸수 없다.

ex) public() {

int num = 10;     > 불가능

String name = "no name";       > 불가능

this("no name", 1)

}

 

ex)

public class Person {

String name;
int age;

public Person() {
this("이름없음", 1);
}

public Person(String name, int age) {
this.name = name;
this.age = age;
}
}

 

4. 자기 자신의 주소를 반환하는 this

public Person getPerson() {
return this;
}

public static void main(String[] args) {

Person p1 = new Person();
p1.showPerson();

System.out.println(p1);
System.out.println(p1.getPerson());
}


=================== result =====================

no name, 1
ch12.Person@5e91993f
ch12.Person@5e91993f

 

5. 객체 간의 협력(콜라보)

객체 지향 프로그래밍에서의 협력

- 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐

- 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현 됨

- 매개 변수로 객체가 전달되는 경우가 발생

- 아래는 객체 협력의 예

> ex) 학생이 버스를 탄다는 행위 > 버스를 탈 때, 학생의 가진 돈은 줄어든다 > 버스의 속성 중에 수입이 늘어난다

 

* 다음 장에서는 실제로 객체 지향 프로그래밍의 예제를 진행해보도록 해보자!!

ex) 각각 두명의 학생이 버스와 지하철을 타고 학교에 가는 과정을 객체 지향 프로그래밍으로 구현.

728x90