2014-02-13 6 views
6
package geometry; 

public class Hypotenuse { 
    public InnerTriangle it = new InnerTriangle(); 

    class InnerTriangle { 
     public int base; 
     public int height; 
    } 
} 

변수 기반을 참조 할 수있는 객체 클래스에 관한 설명은 다음 중 어느 것입니까?내부 클래스의 로컬 변수에 대한 액세스

A. 모든 클래스가 될 수 있습니다.

B. 어떤 클래스도 기본에 액세스 할 수 없습니다.

C. 클래스는 지오메트리 패키지에 속해야합니다.

하는 D. 클래스는이 SCJP 덤프 출신 클래스 빗변

의 서브 클래스 여야 대답은 "C"입니다. 내부 클래스에는 "base"라는 로컬 변수가 있고 내부 클래스에만 범위가 있기 때문에 내 지식은 "B"로 대답해야합니다. 비록 내가 "기하학"클래스에서 변수를 사용하고 싶다고하더라도 나는 그것을 할 수 없다.

내가 잘못하면 안내해주세요.

+0

이 인수를 사용하면 다른 클래스 파일에서도 필드가 범위 외부에 있기 때문에 액세스 할 수 없습니다. –

+0

'it.base'는 패키지 로컬 클래스에 의해 호출 될 수 있습니다 (InnerTriangle는 패키지 로컬 이름 임). –

답변

4

명시 적 액세스 한정자를 지정하지 않았으므로 클래스 InnerTriangle에는 "패키지 수준"범위가 있습니다. 즉, 클래스의 멤버와 패키지의 멤버는 클래스에 대한 액세스가 허용됩니다.

"C"가 정답입니다.

0

base은 공용 변수이고 외부 클래스는 공용 클래스입니다. 따라서 내부 클래스의 범위에있는 모든 클래스는 해당 클래스에 액세스 할 수 있습니다. 내부 클래스에는 패키지 범위가 있으므로 base의 범위가 패키지입니다.

관련 문제