Java 객체 참조 / 범위 질문


Answers

객체는 [ 참고 값이 참조 인 값 ] (Object에서 상속받은 것), 프리미티브 값 (int, long, double 등)은 값으로 전달됩니다.

즉, 프리미티브가 호출자에서 메소드로 전달 될 때 객체가 복사되는 반면 객체에서는 [참조 ]이 전달됩니다.

즉, 메서드에 의해 개체가 변형되면 동일한 개체에 대한 참조가 있으므로 호출자는 이러한 변경 내용을 확인합니다.

반대로 메소드가 프리미티브를 변경하면 메소드가 사본에서 작업 할 때 호출자는 변경 사항을 볼 수 없습니다.

[편집 사유]

Java가 참조로 전달 되었다면 다음과 같이 할 수 있습니다.

Object x;

x = new Integer(42);
foo(x);
System.out.println(x.getClass()); // pass by reference would have it print out java.lang.Float

여기서 foo는 다음과 같이 정의됩니다.

void foo(Object o)
{
   o = new Float(43);
}

Java는 값에 의한 참조를 전달하므로 o = new Float(43); 호출자의 값은 new Integer(42); 로 유지됩니다 new Integer(42);

Question

이 (클래스 본문에 선언 된) 같은 멤버 변수가있는 경우

private Dot[] dots=new Dot[numDots];

이 배열의 모든 멤버를 반복합니다.

1) 모든 Dot 객체를 다른 클래스의 함수로 전달합니다.

2) 어떤 조건이 충족된다면 3 등급의 또 다른 기능으로 전달한다.

3) 그리고 3 클래스는 Dot 객체의 일부 속성을 변경합니다.

이 객체가 원래 / 부모 클래스로 반환되면 해당 속성에 대한 변경 사항이 유지됩니까? 아니면 2/3 함수에 의해 지역 변수처럼 취급 될 것입니까?




Links



Tags

java java   oop   scope