2011-01-14 3 views
0

누구나 왜이 오류가 발생하는지 알 수 있습니까? 표현의개인 유형 .. 오류

불법 시작
private int confirm;

나는 단어를 제거하는 경우 "개인"컴파일러는 '아무튼
private File soundFile3 = new File("merge.wav");

표현의도

불법 시작 어떤 오류라도 보여줍니다. 코드는 public 메서드의 일부입니다. 왜?

감사합니다.

코드는 다음과 같습니다

private int confirm; 
     confirm = JOptionPane.showConfirmDialog(this, 
       "Different sample size....", 
       "JOin", JOptionPane.OK_CANCEL_OPTION); 
     if (confirm != JOptionPane.OK_OPTION) { 
      return; 
     } 

private File soundFile3 = new File("merge.wav"); 
+1

전체 코드,이 클래스의 관련 비트 및 둘러싼 함수를 표시 할 수 있습니까? 실제로 함수 안에 'private'멤버를 넣는 것처럼 들립니다. – birryree

+0

사실 그것은 함수 (Java의 메소드)입니다. "개인"을 제거하면 모든 것이 정상입니다. 메소드 : public void joinFiles() – herbie

답변

5

개인 키워드는 방법 내에서 사용할 수 없습니다.

class Foo { 
    private int num; //private can be specified here 
    public void foo() { 
    int s = 1; 
    int k = num+s; //no private here 
    } 
} 
+0

설명을 주셔서 감사합니다. 그래서 상속 컨셉을 사용하여 private ...을 사용하고 싶다면 메소드를 클래스 (서브 클래스)로 바꾸어야합니다. 맞습니까? – herbie

+0

자바에서는 클래스가없는 메소드가 없습니다. –

1

액세스 한정자는 로컬 변수가 아닌 클래스 변수에만 사용해야합니다.

로컬 변수는 선언 된 블록의 범위에서만 항상 표시됩니다. 따라서 메소드에서 변수를 선언하면 해당 변수는 해당 메소드 내에서만 볼 수 있습니다. 따라서 private을 사용할 필요가 없습니다. 내 말은, 니가 할 수 있더라도 필요 없다는거야.

3

나는 방법으로 final을 제외하고 접근 수정을 할 수 없다고 생각합니다. 메소드 레벨 변수에 전용 수정자를 사용하는 것은 이치에 맞지 않습니다. 메서드 변수는 별도의 스택에 만들어지며 범위가 없어지면 소멸됩니다.