import java.util.Vector;
class Point {
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public String toString() {
return "(" + x + "," + y + ")";
}
};
public class PointVectorEx {
public static void main(String[] args) {
// Point 객체를 요소로만 가지는 벡터 생성
Vector<Point> v = new Vector<Point>();
// 3 개의 Point 객체 삽입
v.add(new Point(2, 3));
v.add(new Point(-5, 20));
v.add(new Point(30, -8));
// 벡터에 있는 Point 객체 모두 검색하여 출력
for(int i=0; i<v.size(); i++) {
Point p = v.get(i); // 벡터에서 i 번째 Point 객체 얻어내기
System.out.println(p); // p.toString()을 이용하여 객체 p 출력
}
}
}
여기서 new Point(2,3)은 Point 메소드를 호출 한 것이고, Point 클래스 내의 Point 메소드는 오버로딩에 의하여 값을 넘겨 받았다. 그리고 this.x의 x는 Point 클래스 내의 x를 가르키고, this.x 오른쪽의 x는 오버로딩에 의해 넘겨받은 값을 가르키어, Point함수 내의 x값이 넘겨받은 값으로 변경이 되었다.
뭔가 해깔리는데 그리고 new Point(2,3)은 Point메소드에 의해서 객체가 생성되는 겁니까? 정확한 개념을 아시는분 알려주세요~ㅜ
파라미터 전달 그거 값이 섈로우카피로 넘어가던가, 파라미터 값을 다른 메소드에서 생성해도 원본 값은 멀쩡함. 레퍼런스인지 밸류인지는 논란이 있던 듯
단지 같은 오브젝트의 멤버를 바꾸는 짓을 하면 원본의 멤버도 같이 바뀌니 조심
여기서 new Point(2,3)은 Point 메소드를 호출 한 것이고, Point 클래스 내의 Point 메소드는 오버로딩에 의하여 값을 넘겨 받았다. 그리고 this.x의 x는 Point 클래스 내의 x를 가르키고, this.x 오른쪽의 x는 오버로딩에 의해 넘겨받은 값을 가르키어, Point함수 내의 x값이 넘겨받은 값으로 변경이 되었다.
이건 제가써본 설명인데 이건 틀린부분 있나요?
함수의 파라미터 전달이 콜 바이 밸류고 오버로딩은 같은 함수 이름을 여러번 정의하는것
그럼 Point 클래스 내의 Point 메소드는 Call by Value에 의하여 값을 넘겨 받았다. 그리고 this.x의 x는 Point 클래스 내의 x를 가르키고, this.x 오른쪽의 x는 Call by Value에 의해 넘겨받은 값을 가르키어 라고 말하면 될까요?
ㅇㅇ