2013-11-04 3 views
0

나는 this answer에 대한 응답으로 이것을 묻습니다. 내가 Variable의 예와 Var 사용하고클래스 변수와 생성자의 매개 변수의 차이점은 무엇입니까?

- 편집 Pls는 사용하기 어디 요구하고 있습니다 Var 또는 Variable :

Class NewClass { 

    private String Variable = ""; 

    Public Class (String Var) 
    { 
     NewClass.Var = Variable; 
    } 
} 

또는 사람이

private String Variable = ""; 

    Public Class (String Variable) 
    { 
     NewClass.Variable = Var; // OR WHATEVER OTHER COMBINATIONS IT MAY BE. 
    } 
} 

클래스 변수들, 이것이 매개 변수와 어떻게 다른지, 어디로 간다?

편집

이 링크 대답 있다는 내가 추가해야하지만, 사람들이 그것을보고하지 않은 것 같다

그것은 특히 혼란 때문에 기능 에 매개 변수 클래스 변수와 정확히 같은 이름을 가지지 만 Patient.ptNo 은 매개 변수 ptNo와 같은 변수가 아닙니다. (이 클래스의 특정 인스턴스에 속하기 때문에 사실, Patient.ptNo는 this.ptNo을해야합니다. Patient.ptNo 유형의 환자의 모든 객체에 공통의 단일 값을 참조합니다.)

사람들이 this.Variable = Variable이라고 말하면 나는 무엇이 무엇인지 아직도 혼란 스럽습니다.

+0

좋아요. 기본 질문을하는 것입니다. 그것은 내 머리가 어떤지, 나는 혀를 읽고 공부했습니다. 그리고 더 이상 기본 개념을 고수 할 수 없을 때 나는 여기에옵니다. is가 그 자리에 빠지면 그렇게 빨리 끝납니다. 그래서 pls는 참을성이있다, 당신은 한때 배웠다. .. OK? –

+0

'Var' 또는'variable'인지를'variable'로 변경하여 편집이 좋지 않았습니다. 둘 다'variable'라고 가정하고 있습니다. –

+0

새 사용자 이름을 좋아합니다. 나는 사용자 구를 말해야합니까 :-) –

답변

1

클래스 변수는 클래스에 의해 static 필드로 정의 된 변수이며 매개 변수는 메서드에서 정의한 변수입니다. 그것은 아주 간단합니다. 인스턴스 변수 (클래스 레벨에서 정적으로 정의되지 않음)와 지역 변수 (메소드 내에서 정의되지만 입력 매개 변수로는 정의되지 않음)도 있습니다.

public class Foo { 
    private static String someName; // this is a class variable 
    private String someOtherName; // this is an instance variable 

    public Foo(String anotherName) { // anotherName is a constructor parameter 
     int yetAnother = 1; // yetAnother is a local variable 
     someOtherName = "foo"; // assign a value to someOtherName 
    } 

이 두 변수는 완전히 구분된다. 그들은 심지어 같은 유형을 가질 필요가 없습니다! 귀하의 예제에서 유일한 합병증은 두 변수가 같은 이름을 가지게된다는 것입니다. 이런 일이 발생하면 컴파일러는 생성자 매개 변수 (또는 메서드 매개 변수 또는 로컬 변수)를 클래스 변수보다 우선 사용합니다. 클래스 변수를 사용하도록 강제하려면 this. 접두사를 붙입니다.

명심해야 할 것은 두 변수가 이름에 관계없이 완전히 별개라는 것입니다.

그래서이 :

class NewClass { 

    private String Variable = ""; 

    Public NewClass (String Variable) 
    { 
     NewClass.Variable = Variable; 
    } 
} 

이 정확히 동일합니다

class NewClass { 

    private String Variable = ""; 

    Public NewClass (String someOtherVariableName) 
    { 
     NewClass.Variable = someOtherVariableName; 
    } 
} 

... 그리고 그것은이로도 정확히 동일합니다 :의

class NewClass { 

    private String Variable = ""; 

    Public NewClass (String Var) 
    { 
     NewClass.Variable = Var; 
    } 
} 

협약 클래스 변수와 같은 매개 변수에 대해 동일한 이름을 사용한다는 것은 변수가 무의미한 variab을 필요로하지 않는다는 것을 의미합니다 이름.

+0

이것은 아름다운 대답이다. +100 .. 나는 다른 대답을 받아 들였다. (그가 도착했을 때 그는 1 명의 담당자 만 있었고 어디에서 사용할 지 명확히했다.) OK인가? 나는 작은 대답을하는 사람들에게 큰 부드럽다. 정답을 주겠다. –

+0

걱정하지 마라. 내가 도울 수있어서 기쁘다. :) – yshavit

+0

이것이 더 좋은 대답이기 때문에 나는 찢어진 느낌이 들지만, 네가 네 일을 끝내기 전에 다른 하나를 받아 들였다. 대답을 받아들이는 데 30 분의 한도가 있어야한다. 나는 메타에 묻겠다. –

1

this.Variable은 클래스의 Variable 필드를 참조하고 단지 Variable은 생성자에 전달 된 매개 변수입니다.

private String Variable = ""; -이

따라서 생성자가

public NewClass(String Var/iable) { 
    this.Variable = Variable; // this must be used, where this.Variable is the class variable and just Variable is the constructor parameter. 
} 

주 liek 보일 것이다 정적되지 않습니다 : 당신은 클래스의 정적 필드에 허용되는 ClassName.fieldName을 사용했다. Variablestatic이 아닌 경우에는 this.fieldName이되어야합니다. 또한 Public은 대문자가 아니어야하며 생성자 이름은 클래스 이름이어야합니다. 키워드 class은 작아야하며 Class이 아니어야합니다.

코드에 입력 한 방식을 사용하려는 경우 클래스의 Variable은 정적이어야합니다. 이

private static String Variable = ""; 
public NewClass(String Var/iable) { 
    NewClass.Variable = Variable; // Since Variable is static now, you use the classname to access the static field. 
} 

편집 비슷해 : 오래 당신이 그들 모두를 차별화 할 수있는, 같은 이름을 사용하는 것이 절대적으로 괜찮습니다. 이 경우 this.Variable은 클래스 변수를 의미하며이 클래스의 인스턴스를 생성하는 동안 생성자에 전달 된 매개 변수는 Variable 만 참조합니다.

class Variable = Variable passed to the constructor; // This is what the below statement means 
this.Variable = Variable; 
+0

pls 편집 edit Pls note 참고 : 내가 어디에서 var/iable을 사용하는지 잘 모르겠다. 생성자에 + btw가 있는지 잘 모르겠다. –

+1

나는 대답을 받아들이고 싶다. 분명히 해줄 필요가있다. ^^ –

+0

확인 편집하고 그것이 당신의 의심에 대답하는지보십시오. – SudoRahul

2

생성자의 로컬 변수이므로 변수를 생성자 매개 변수로 사용하는 데 문제가 없습니다.

class NewClass { 

    private String Variable = ""; 

    Public NewClass (String Variable) 
    { 
     this.Variable = Variable; 
    } 
} 

         or 

class NewClass { 

    private String Variable = ""; 

    Public NewClass (String Var) 
    { 
     this.Variable = Var; 
    } 
} 

모두 괜찮습니다.

this.Variable은 현재 개체 변수를 나타냅니다.

명명 규칙을 읽으십시오.

+0

beautiful 그래서 클래스 변수는'Variable'이고 매개 변수는'Var'입니까? –

+0

나는 다른 대답을 받아 들였다. .. 미안하다, 그는 단지 그것에 더 많은 세부를 가지고 있었다. 당신의 도움을 위해 thnx +1 –

0
class NewClass { 

private String variable = ""; 

public NewClass (String variable) 
{ 
    this.variable = variable; 
} 
} 

this.variable은 현재 개체 인스턴스를 나타냅니다. 명명 규칙을 따르십시오

+0

나 자신을 만든 것으로 생각하지 않습니다. var/variabl 객체에서 지움. –

+0

this.Variable = Variable ..... this.Variable은 현재 객체 인스턴스입니다. Variable은 생성자 인수 변수입니다. –

+0

내가 미안하다고 생각한 것을 잘 전달하지 못했기 때문에 저는 제 Q를 편집했습니다. –

관련 문제