접근 제어자의 사용 - 클래스 레벨
클래스 레벨의 접근 제어자 규칙
- 클래스 레벨의 접근 제어자는
public,default만 사용할 수 있습니다.-
private,protected는 사용할 수 없습니다.
-
-
public클래스는 반드시 파일명과 이름이 같아야 합니다.- 하나의 자바 파일에
public클래스는 하나만 등장할 수 있습니다. - 하나의 자바 파일에
default접근 제어자를 사용하는 클래스는 무한정 만들 수 있습니다.
- 하나의 자바 파일에
PublicClass.java 파일
package access.a;
public class PublicClass {
pulbic static void main(String[] args) {
PublicClass publicClass = new PublicClass();
DefaultClass1 class1 = new DefaultClass1();
DefaultClass2 class2 = new DefaultClass2();
}
}
class DefaultClass1 {
}
class DefaultClass2 {
}
- 패키지 위치는
package access.a입니다. 패키지 위치를 꼭 맞추어야 합니다. 주의합시다. -
PublicClass라는 이름의 클래스를 만들었습니다. 이 클래스는public접근 제어자입니다.- 따라서 파일명과 이 클래스의 이름이 반드시 같아야 합니다.
- 이 클래스는
public이기 때문에 외부에서 접근할 수 있습니다.
- 이 클래스는
- 따라서 파일명과 이 클래스의 이름이 반드시 같아야 합니다.
-
DefaultClass1,DefaultClass2는default접근 제어자입니다.- 이 클래스는
default이기 때문에 같은 패키지 내부에서만 접근할 수 있습니다.
- 이 클래스는
-
PublicClass의main()을 보면 각각의 클래스를 사용하는 예를 보여줍니다.-
PublicClass의main()을 보면 각각의 클래스를 사용하는 예를 보여줍니다.-
PublicClass는public접근 제어입니다.- 따라서 어디서든 사용할 수 있습니다.
-
DefaultClass1,DefaultClass2와는 같은 패키지에 있으므로 사용할 수 있습니다.
-
- 따라서 어디서든 사용할 수 있습니다.
-
-
PublicClassInnerMain
package access.a;
public class PublicClassInnerMain {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
DefaultClass1 class1 = new DefaultClass1();
DefaultClass2 class2 = new DefaultClass2();
}
}
- 패키지 위치는
package access.a입니다. 패키지 위치를 꼭 맞춰줘야합니다. -
PublicClass는public클래스입니다.- 따라서 외부에서 접근할 수 있습니다.
-
PublicClassInnerMain와DefaultClass1,DefaultClass2는 같은 패키지입니다.- 따라서 접근할 수 있습니다.
PublicClassOuterMain
package access.b;
//import access.a.DefaultClass1;
//import access.a.DefaultClass2;
import access.a.PublicClass;
public class PublicClassOuterMain {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
// 다른 패키지 접근 불가.
//DefaultClass1 class1 = new DefaultClass1();
//DefaultClass2 class2 = new DefaultClass2();
}
}
- 패키지 위치는
package accesss.b입니다. 패키지 위치를 꼭 맞춰야합니다. -
PublicClass는public클래스입니다.- 따라서 외부에서 접근할 수 있습니다.
-
PublicClassOuterMain와DefaultClass1,DefaultClass2는 다른 패키지입니다.- 따라서 접근할 수 없습니다.