2013-08-05 2 views
0

안녕하세요, 저는 총 자바 초보자입니다. 솔직히 말하면 제 문제를 설명하는 방법에 대해서는 잘 모르겠습니다.static final 상속 -> 보이지 않음

그래서 두 클래스 중 하나가 다른 클래스에 상속됩니다.

이제는 수퍼 클래스를 변경할 수 없으므로 훨씬 쉬울 것입니다.

문제는 그 변수를 액세스 할 내 하위 클래스에서이 변수가 슈퍼 클래스에 다음과 같이 정의된다

을 (의 그것을 변수 1 부르 자)이다 : 내 에서 지금

static final String variable1 = (String)AccessController.doPrivileged(new PrivilegedAction() 
{ 
    public Object run() { 
     return System.getProperty("variable1", "\n"); 
    } 
} 
); 

하위 클래스 다음을 시도해보십시오.

this.finalOutputFormat = (replaceKeys(this.format) + variable1); 

하지만 작동하지 않습니다. b 이클립스는 변수 1 이 "보이지 않습니다"라고 말합니다..

그건 내가 가진 유일한 오류입니다.

변수 1이 내 하위 클래스에 표시되지 않는 이유는 무엇입니까? 수퍼 클래스는 라이브러리로 가져 오지만 분명히 다른 패키지로 가져옵니다.

상황에 대한 내 설명이 너무 혼란스럽지 않지만 지금은 이보다 더 많은 정보가 없기를 바랍니다.

감사합니다.

+1

http://docs.oracle.com/javase/tutorial/java/javaOO 슈퍼 클래스와 같은 패키지에 하위 클래스를 이동 /accesscontrol.html – arshajii

+1

Google의 "자바 가시성"을 사용하면이 공식적인 문서 (http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)를 찾을 수 있습니다. 이를 읽으면 "no visibility modifier"가있는 변수는 같은 클래스 또는 동일한 패키지에서만 액세스 할 수 있습니다. – Pshemo

+0

감사합니다. 정말 감사드립니다. – user2653335

답변

4

variable1에 공개 설정 키워드 (공개, 비공개, 보호)가 없습니다. 따라서 동일한 패키지에있는 클래스에서만 액세스 할 수 있습니다.

수퍼 클래스를 수정할 수없는 경우 유일한 방법은 수퍼 클래스와 동일한 패키지에 클래스를 넣는 것입니다. 이처럼 사용하려는 경우

+1

답변의 "_and subclasses_"부분이 잘못되었습니다. 아래 질문에있는 링크를 참조하십시오. – jlordo

+0

체크 됨. 당신 말이 맞아요, 고마워요. 나는 편집했다. –

+0

감사합니다. 정말 감사드립니다. – user2653335

0

, 변수 1 전에 공공 수정을 넣어 또는

관련 문제