내부 클래스에서 변수를 private로 선언하면 변수가 외부 클래스에서 볼 수 있습니다. 나는 여기서 논리를 이해할 수 없다. 이상적으로 내부 클래스에서만 액세스 할 수 있어야하지 않습니까?외부 클래스에서 내부 클래스의 변수에 액세스 할 수있는 이유는 무엇입니까?
3
A
답변
0
기본적으로 질문이 Sun/Oracle의 언어 디자이너가 특정 행동을 허용하기로 결정한 이유를 묻는 것 같기 때문에 답은 주관적이라고 생각합니다. 여기에 대한 답변에서 시도했다
...
우선 몇 가지 용어, 클래스 내에서 선언 된 클래스는 중첩 된 클래스입니다. 내부 클래스는 외부 클래스의 인스턴스 내에 있어야하는 비 정적 중첩 클래스입니다. 따라서 내부 클래스는 외부 클래스의 일부이며 그 의미에서 내부 클래스의 모든 멤버는 외부 클래스의 멤버입니다.
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
인스턴스 메소드와 변수와 같이, 내측 클래스 포위 클래스의 인스턴스와 관련된 해당 객체의 메소드와 필드에 직접 액세스를 갖는다. 또한 내부 클래스는 인스턴스와 연결되어 있으므로 정적 멤버 자체를 정의 할 수 없습니다.
또 다른 생각은 내부 클래스에 대한 유효한 사용 사례가 내부 클래스가 외부 클래스의 멤버를 숨길 수있게하는 필요성을 배제한다는 것입니다. 즉, 외부 클래스가 내부 클래스에 연결되지 않는다는 개념은 없습니다.
private
을 허용하는 이유는 무엇입니까? 전용 멤버는 내부 클래스의 인스턴스에 액세스 할 수있는 다른 클래스에서 숨길 수 있기 때문에
관련 문제
- 1. 내부 클래스의 외부 메서드에 액세스
- 2. Java 내부 클래스에서 외부 클래스의 변수를 최종적으로 사용해야하는 이유는 무엇입니까?
- 3. Java의 내부 클래스에서 변수에 액세스
- 4. 내부 클래스에서 외부 클래스 메서드에 액세스
- 5. 내부 익명의 외부 변수에 액세스 Runnable
- 6. C에서 내부 클래스에서 외부 클래스 변수에 액세스하는 방법
- 7. 내부 클래스의 외부 클래스 접근 자 액세스
- 8. 존재하지 않는 변수에 액세스 할 수있는 이유는 무엇입니까?
- 9. __class__ 접두사가없는 인스턴스에서 클래스 변수에 액세스 할 수있는 이유는 무엇입니까?
- 10. 배열 색인을 사용하여 다른 변수에 액세스 할 수있는 이유는 무엇입니까?
- 11. Java의 외부 클래스의 액세스 변수
- 12. 내부 클래스의 외부 클래스 객체에 액세스 할 수 있습니까?
- 13. page.xaml.cs에서 외부 클래스의 멤버 변수에 액세스 할 수 있습니까?
- 14. 내부 클래스에서 외부 클래스의 "this"에 액세스하려면 어떻게해야합니까?
- 15. 외부 클래스가 내부 클래스의 멤버에 액세스 할 수 있습니까?
- 16. Eclipse 외부 변수에 액세스
- 17. 자바 익명의 내부 클래스에서 외부 클래스 인스턴스에 액세스
- 18. 유니온의 내부 변수에 액세스
- 19. 부모 클래스의 대입 연산자는 파생 클래스에서 액세스 할 수없는 이유는
- 20. 내부 클래스의 변수 액세스
- 21. 내부 클래스에서 클래스 객체에 액세스
- 22. 다른 클래스의 sqlite3 변수에 액세스
- 23. Java 중첩 된 내부 클래스 외부 클래스 변수에 액세스
- 24. 클래스의 다른 클래스에서 NSMutableArray에 액세스
- 25. 내부 클래스의 필드를 파이썬의 외부 클래스에서 변경하려면 어떻게해야합니까?
- 26. dispatchMessage 내의 외부 변수에 액세스
- 27. 다른 클래스의 인스턴스 변수에 액세스
- 28. 다른 클래스의 정적 변수에 액세스
- 29. 다른 클래스의 비 정적 변수에 액세스
- 30. 내부 변수에 액세스 할 수 있도록 속성을 작성하는 방법은 무엇입니까?
@ wrschneider99 나는이 질문이 다르다 고 생각한다. 이유는 무엇인가? (언어 디자인 질문을 만든다.) –
예, 나는 실제로 여기 디자인에 의문을 제기하고 있었다. 나는 innerclass 변수에 접근하는 것이 가능하다는 것을 알고 있지만, 왜 그들이 같은 것을 할 것인지를 알아 내기 위해 노력하고있다. – user1527107
나는 이미 여기에 물어 보았다고 생각한다. 물어보기 전에 약간의 연구를 해보 라. http://stackoverflow.com/questions/1801718/why-can-outer-java-classes-access-inner-class-private-members – Scorpion