저는 자바에서 꽤 초보자입니다. 저는 그 순간 "Thinking in Java"를 읽었습니다. 그래서 "Access Control"장을 이해하려고 시도하면서 나는 member 개인용 클래스의 멤버가 될 수 있으며 약간 혼란 스러웠습니다. 그래서이 문장을 확인하기로 결정했는데, 그런 코드를 컴파일하려고 할 때 오류가 발생했습니다. 다음은 간단한 예이다 :
비공개 패키지 클래스의 public 멤버에 액세스하려면 어떻게해야합니까?
PrivatePackageClass.java :
오류의 설명이다PublicAccessClass.java:8: error:
PrivatePackageClass is not public in simple.PrivatePackage; cannot be accessed from outside package
PrivatePackageClass.print(Arrays.toString(args));
package simple.PrivatePackage;
class PrivatePackageClass {
public static void print(Object obj) {
System.out.println(obj);
}
}
PublicAccessClass.java
package simple;
import simple.PrivatePackage.*;
import java.util.*;
public class PublicAccessClass {
public static void main(String[] args) {
PrivatePackageClass.print(Arrays.toString(args));
}
}
패키지 개인 클래스의 공용 멤버에 액세스 할 수있는 간단한 방법이 없다는 것이 맞습니까?
UPD! 고맙습니다. 두 코드가 모두 같은 패키지에 있다면 괜찮을 것입니다. 그러나 나는이 책의 진술에 대해 여전히 혼란 스럽다. 여기있다 : 사람이 될 수 있는지 설명해 수 있다면
As previously mentioned, if you don’t put an access specifier for class access, it defaults to package access. This means that an object of that class can be created by any other class in the package, but not outside the package. However, if a static member of that class is public, the client programmer can still access that static member even though they cannot create an object of that class.
내가 감사 할 것입니다.
"Thinking Java"(2 년 후 두 번째)에서 인용 한이 이상한 성명서를 보았습니다 :) 실수가있는 것처럼 보입니다. 이 책은 물론 패키지 액세스 클래스를 다른 패키지로 가져올 수도 있습니다. – troy