2014-07-09 1 views
0

'this'연산자가 현재 객체의 변수를 참조하는 데 사용되는 경우 생성자에 포함됩니까? 생성 된 객체가 '이'오퍼레이터 밖에 생성자 또는 단지 변수 X를 반환 할 때, 예를 들어 ... 생성자로서 이 연산자를 사용하여 생성자에서 변수를 가져 옵니까?

public class Mechanics { 

    public Mechanics() { 
     int x = 1; 

    } 

    public int returnX(){ 
    return this.x; 
{ 

} 

는 호출?

감사합니다.

+2

가변 범위를 읽어야합니다. –

+4

'x'의 범위는 생성자로 제한됩니다. 그래서 아니오, 당신은 그것을 참조 할 수 없을 것입니다. –

+0

또한 변수와 데이터 멤버는 완전히 다른 것들입니다. –

답변

3

코드가 유효하지 않으며 컴파일되지 않습니다. 생성자에 정의 된 x은 생성자에 로컬 인 이고입니다. Mechanics 클래스의 필드가 아닙니다. 다른 곳 x을 사용할 수 있도록하기 위해, 당신은 클래스의 필드로 선언해야합니다

public class Mechanics { 

    private int x; 

    public Mechanics() { 
     this.x = 1; //initialize x in the constructor 

    }   

    public int returnX() { 
     return this.x; 
    } 
} 

이 때문에 당신이 기대하는 행동뿐만 아니라, 그냥, 어떤 지역 변수 당신은 어떤 내부 선언 클래스의 멤버 메서드 (생성자 포함)는 소유 클래스의 필드로 바뀝니다. 이것은 무정부 상태의 법칙입니다.

0

변수 x의 범위가 생성자로 제한됩니다.

public class Mechanics { 

    private int x; 

    public Mechanics() { 
     this.x =1; 

    } 

    public int returnX(){ 
    return this.x; 
} 

} 
0

X는 생성자 내부의 지역 변수이며, 생성자는이 작업의 완료 후에는 존재하지 않습니다

당신이 returnX에서 x에 대한 액세스를 원하는 경우에 당신은 그렇게 할 수 있습니다. 코드가 컴파일되지 않습니다.

"this"는이 클래스의 객체에 대한 참조 일뿐입니다. 다른 메서드 내에서 일부 로컬 변수의 값을 가져올 수 있습니까? 아니, 어떻게 해봐. 모든 메소드에서 볼 수있는 클래스 필드가 필요합니다.

관련 문제