본문 바로가기

Java

Day 4. 콜바이 레퍼런스

package my.examples.javaexam.practice;

public class Box {
private Item item;

protected void add(Item item){
this.item = item;
int tmp;
tmp = item.x;
this.item.x = item.y;
this.item.y = tmp;

}

protected Item get(){
return item;
}
}

package my.examples.javaexam.practice;

public class Item {
int x;
int y;
}
package my.examples.javaexam.practice;

public class Execute {
public static void main(String[] args){
Box box = new Box();
Item item = new Item();
item.x = 100;
item.y = 200;
box.add(item);
Item i = box.get();

System.out.println(i.x);
System.out.println(i.y);
}
}

i가 참조하는 것은 바뀐 Box클래스의 add메소드에의해 값이 바뀐 Item객체이다. 처음에 main 메서드에서 각 클래스들을 생성해서 초기화 하고, item.x, item.y 를 이용해서 Item 객체의 변수들을 각각 초기화 시켰다. 그 후 item 을 매개변수로 받는 box.add(item)을 통해 값을 설정한 item을 box 클래스로 넘겨주고 그안의 add 메서드가 실행되면서 Box 클래스에서 만든 Item의 변수가 바뀐다. 그리고 Item i = box.get();을 실행해서 Box클래스내의 item이 참조하는 Item 객체의 주소를 i에 넣어주는 루틴을 실행하고 i의 값을 불러오는 System.out.println(i.x); System.out.println(i.y);를 실행하면 x,y값이 바뀌어서 출력된다.

'Java' 카테고리의 다른 글

Day 5. Collection framework(자료구조)  (0) 2018.12.10
Day 4. 과제  (0) 2018.12.10
Day 4. 템플릿 메서드(Template Method) 패턴  (0) 2018.12.09
Day 3. Maven 이란?  (0) 2018.12.06
Day 3. Maven 프로젝트 생성 및 Java 8 설정  (0) 2018.12.06