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 |