2017-03-25 1 views
0

왜 다음 코드가 컴파일 오류가 발생합니까?protected access java issue

public class A 
{  
    protected int _i; 
    public A(int i) 
    { 
     _i=i; 
    } 
    public boolean equals(Object other) 
    { 
     System.out.print("A "); 
     return ((other!=null) && (_i==other._i)); 
    } 
} 

Object 클래스는 슈퍼 클래스와 서브 클래스, 즉, A의 부모로 간주됩니다. 그렇다면 Object 클래스에는 보호 된 변수에 대한 액세스 권한이 없습니다.

+1

특허는 자신의 자녀로부터 상속하지 않으며 반대로 작동합니다 – MadProgrammer

+0

개체가 Java의 수퍼 클래스입니다. 수퍼 클래스 개체는 클래스 A 보호 데이터 멤버를 사용할 수 없습니다. – Omore

+0

@Art - 귀하가 얻은 모든 응답은 똑같은 말을합니다. 부모 - 자식 가시성은 한 방향으로 나아갑니다. 이 [link] (http://stackoverflow.com/questions/899414/in-java-why-super-class-method-cant-access-protected-or-private-methods-variab)에서는 이유를 설명합니다. Q : 이해가 되니? – paulsm4

답변

1

그것은 전혀 액세스 한정자에 대한 문제가 아니다 당신은 당신이 0123을 선언 후에도 같은 오류가 발생합니다은 public입니다.

문제는 아동 학급이 모든 부모 구성원을 볼 수 있지만 부모는 아동 구성원을 볼 수 없다는 것입니다. 그렇기 때문에 other._i은 유효하지 않습니다.