내부 클래스는 클래스 내부에 정의 된 클래스이며 내부 클래스는 public, private, protected로 선언 할 수 있습니다. 내부 클래스가 private 및 protected로 정의 된 경우 외부 클래스가 내부 클래스의 멤버에 액세스 할 수 있습니까? 내부 클래스는 외부 클래스의 멤버에 액세스 할 수 있습니까?외부 클래스가 내부 클래스의 멤버에 액세스 할 수 있습니까?
답변
, 할 수있는 외부 클래스 액세스 내부 클래스의 멤버?
예. 이러한 한정어는 외부 클래스에서 파생 된 클래스에서 내부 클래스의 가시성에만 영향을줍니다.
내부 클래스 액세스 멤버 외부 클래스 수 있습니까?
예, 어떤 인스턴스 메소드와 마찬가지로 private
이 선언 된 것을 포함합니다.
우리는 그냥 외부 클래스 또는 내부 클래스의 객체에 의해 내부 클래스 메서드를 호출 할 수 있습니다 @Hippo –
@MuhammadBabar 내부 클래스의 객체로 – light
는 (여호수아 블로흐, 책 효과적인 자바에서.) 질문에 대해서는는 "A 중첩 된 클래스는 다른 클래스에서 정의 된 클래스입니다. 중첩 된 클래스 가 둘러싸는 클래스를 제공하는 유일한 존재한다. 중첩 클래스 이 다른 상황에서 유용 할 경우, 다음이해야 최상위 클래스가 네 중첩 클래스의 종류가 있습니다.. 정적 멤버 클래스, 비 정적 멤버 클래스, 익명 클래스, 지역 클래스를 제외한 모든 에게 제 1 종은 내부 클래스로 알려져있다 ".
:이 직접 테스트하는 것은 매우 쉽습니다. 그러나 정적 컨텍스트에서 (참조가 아닌) 비 정적 멤버에 액세스하려고하거나 액세스 할 수없는 범위에있는 멤버에 액세스하려고하지 않는 한 대답은 예 (심지어 private
멤버의 경우)입니다. .
즉, =가 매우 기대됩니다. 내부 클래스는 개인 로 정의하고 보호하는 경우
일반적으로 내부 클래스의 비공개 필드에 액세스하거나 비공개 필드에 액세스 할 수 있습니다. 다음 코드는 이클립스에서 컴파일 :
이클립스에서 오류가 (이 설정은 바깥 쪽 형식의 액세스 할 수없는 멤버에 액세스 "라고, 당신이 치료하는 당신의 IDE/컴파일러는 필드에 대한 액세스를 구성 할 수 있습니다 말했다public class Outer {
private int x;
public void f() {
Inner inner = new Inner();
inner.g();
inner.y = 5;
}
private class Inner {
private int y;
public void g() { x = 5; }
}
}
", 환경 설정 -> Java -> 컴파일러 -> 오류/경고 -> 코드 스타일)
나는 이것을 시도하고, 안드로이드'에서이 오류를 줬어 읽기 시도 from field 'int com.backspace.memebook.MainActivity $ MyTask.counter'null 객체 참조에' –
예! 외부 클래스의 내부 클래스 멤버와 외부 클래스의 멤버 모두에 액세스 할 수 있습니다 (액세스 한정자와 관계 없음). 방금 필드 이름의 필드에 액세스 할 수 없습니다, 당신은 당신이 직접 내부 클래스에서 외부 클래스의 정적 필드에 액세스 할 수 있지만
InnerClass.staticInnerField
처럼 접근 할 필요가 정적 중첩 클래스 그러나 , 필드 이름.
설명 일반 내부 클래스의 맥락에서 당신은 내부 클래스 직접에서 외부 클래스의 모든 필드에 액세스 할 수 있습니다
[정기적 인 내부 클래스가 그 내부에 선언 된 정적 멤버를 가질 수 없습니다]입니다.
class Outer {
private static int x = 0;
class Inner {
void print() {
System.out.println(x); // x can be directly accessed
}
}
public static void main(String[] args) {
new Outer().new Inner().print();
}
}
Even Outer 클래스는 Inner 클래스의 모든 필드에 액세스 할 수 있지만 내부 클래스의 개체를 통해 액세스 할 수 있습니다.
class Outer {
private class Inner {
private int x = 10;
}
void print() {
Inner inner = new Inner();
System.out.println(inner.x);
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.print();
}
}
- 1. Java 중첩 클래스에서, 둘러싼 클래스가 내부 클래스의 개인 멤버에 액세스 할 수 있습니까?
- 2. 내부 클래스의 외부 클래스 객체에 액세스 할 수 있습니까?
- 3. 내부 클래스와 외부 멤버에 대한 액세스
- 4. C++ 클래스가 다른 클래스의 "내부"멤버에 액세스 할 수 있지만 비공개는 허용하지 않습니까?
- 5. "variable"클래스의 멤버에 액세스
- 6. 내부 클래스 생성자에서 외부 클래스의 정적 멤버에 액세스하는 방법은 무엇입니까?
- 7. 내부 클래스에서 외부 클래스 메서드에 액세스
- 8. 보호 된 상속을 통해 파생 클래스가 기본 클래스의 private 멤버에 액세스 할 수 있습니까?
- 9. 다른 클래스의 폼 멤버에 액세스
- 10. 부분 클래스의 공유 멤버에 액세스
- 11. 벡터를 사용하여 클래스의 멤버에 액세스
- 12. 외부 클래스의 생성자에서 내부 클래스의 객체를 만들 수 있습니까?
- 13. 두 클래스가 서로 액세스 할 수 있습니까?
- 14. 보기에서 내 뷰 모델의 내부 멤버에 액세스 할 수 없습니다.
- 15. 내부 클래스의 메서드가 부모 클래스 메서드에 액세스 할 수 있습니까?
- 16. page.xaml.cs에서 외부 클래스의 멤버 변수에 액세스 할 수 있습니까?
- 17. 내부 클래스의 변수 액세스
- 18. System.Reflection을 통해 내부 멤버에 액세스 하시겠습니까?
- 19. 파생 클래스에서 클래스의 보호 된 멤버에 액세스
- 20. Java에서 내부 클래스의 외부 클래스 인스턴스를 변경할 수 있습니까?
- 21. 부분 클래스의 나머지 절반의 멤버에 액세스
- 22. C#에서는 클래스의 비공유 멤버에 액세스 할 수 없지만 VB에서는 사용할 수 있습니까?
- 23. 코드에서 UserProperty의 멤버에 액세스 할 수 없습니다.
- 24. 다른 클래스의 Java.util지도에 액세스 할 수 있습니까?
- 25. 자바 스레드가 정적 내부 클래스의 외부 클래스에 액세스
- 26. 구조체의 멤버에 액세스 할 #define?
- 27. 벡터의 객체 벡터에있는 멤버에 액세스
- 28. 런타임시 struct 멤버에 액세스
- 29. 왜 정적 함수에서만 정적 멤버에 액세스 할 수 있습니까?
- 30. jquery - 내부 div에서 외부 div를 다시로드 할 수 있습니까?
시도해 보셨습니까? 아마도 당신 자신처럼 빨리 시도 할 것입니다. – whirlwin