본문 바로가기
풀스택/Java다시 복습 처음부터

java 복습 3-3(객체지향 프로그래밍) - Call by value

by woohyun22 2019. 6. 6.

하나의 파일에 여러개의 클래스를 만들수 있지만, 예를 들어 Counter라는 .java 파일에는 Counter라는 클래스는 public 으로 선언을 해야된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Updater {
    public void update(int count) {
        count++;
    }
}
 
public class Counter {
    int count = 0;  // 객체변수
    public static void main(String[] args) {        
        Counter myCounter = new Counter();        
        System.out.println("before update:"+myCounter.count);
        Updater myUpdater = new Updater();
        myUpdater.update(myCounter.count);
        System.out.println("after update:"+myCounter.count);
    }
}
cs


메소드 안에서의 count만 ++되므로 Counter클래스의 count는 변화가 없다. update 메소드는 int count를 전달받았기 때문


1
2
3
4
5
class Updater {
    public void update(Counter counter) {
        counter.count++;
    }
}
cs


단 객체를 전달받으면 count값을 변경 시킬 수 있는데, 호출 부분에서도 명확하게 해줘야한다.


1
myUpdater.update(myCounter);
cs


메소드의 입력으로 객체를 전달받으면 메소드가 입력받은 객체를 그대로 사용하기 때문에 객체의 변경된 속성값이 유지된다.

728x90

댓글