2012-12-10 2 views
3

자바를 사용하는 경우 하위 클래스가 수퍼 클래스의 인스턴스 변수를 쉐도우 처리 할 때 컴파일러 경고를 얻을 수있는 방법이 있습니까? 같은 이름? 예를 들어 :상속 - 같은 이름의 수퍼 클래스 변수를 섀도 잉 할 때의 경고

class A { 
    String variable; 

    A() { 
     variable = "A"; 
    } 
} 

class B extends A { 
    int variable; 

    B() { 
     variable = 1; 
    } 
} 

B b = new B(); 
System.out.println("Variable value: " + b.variable + ", " + ((A) b).variable); 
// prints out: "Variable value: 1, A" 

나는 변수가 이미 존재한다는 것을 B에 경고하고 싶습니다.

+1

왜? 자신의 필드를 비공개로 설정하면 어쨌든 충돌하지 않습니다. – Robert

+0

예기치 않은 버그를 만들 수 있기 때문에 모든 것을위한 전체 setter/getter 메서드를 작성하지 않을 때 프로토 타입 단계에서 알아두면 유용 할 수 있습니다. –

+1

쉐도 잉 (shadowing)이라고하며 오버라이드하지는 않으며, 경고 할 수있는 옵션이 있습니다. – Robin

답변

6

예. 이클립스에서 당신이 찾고있는 옵션이 포함되어 이름 음영과 갈등에 하위 섹션이 그 창에서

Preferences->Java->Compiler->Errors/Warnings 

로 이동합니다.

+0

+1, 방금 해봤지만 나를 위해 일했습니다 .. : P,하지만 변수를 무시하는 것으로 간주 되나요 ?? 나는 그것이 무시보다 더 많은 그림자라고 생각한다. 맞습니까? – PermGenError

+0

아하, *이 *는 내가 찾고있는 것입니다. 감사! –

관련 문제