접근 제어자 사용 - 필드, 메서드
패키지의 위치에 주의하며 실습해보자.
AccessData.java
package access.a;
public class AccessData {
public int publicField;
int defaultField;
private int privateField;
public void publicMethod() {
System.out.println("publicMethod 호출:" + publicField);
}
void defauiltMethod() {
System.out.println("defaultMethod 호출:" + defaultField);
}
private void privateMethod() {
System.out.println("privateMethod 호출" + privateField);
}
public void innerAccess() {
System.out.println("내부 호출");
publicField = 100;
defaultField = 200;
privateField = 300;
publicMethod();
defauiltMethod();
privateMethod();
}
}
AccessInnerMain.java
public class AccessInnerMain {
public static void main(String[] args) {
AccessData data = new AccessData();
//public 호출 가능
data.publicField = 1;
data.publicMethod();
//같은 패키지 defauilt 호출 가능
data.defaultField = 2;
data.defauiltMethod();
//private 호출 불가
//data.privateField = 3;
//data.privateMethod();
data.innerAccess();
}
}
=> data.innerAccess() 메서드는 public이다. 따라서 외부에서 호출할 수 있다.
innerAccess() 메서드 자체는 AccessData에 포함되어 있다. 이 메서드는 자신의 private 필드와 메서드에 모두 접근할 수 있다.
이번엔 패키지 b를 만들어보자.
AccessOuterMain.java
package access.b;
import access.a.AccessData;
public class AccessOuterMain {
public static void main(String[] args) {
AccessData data = new AccessData();
//public 호출 가능
data.publicField = 1;
data.publicMethod();
//같은 패키지 defauilt 호출 가능
data.defaultField = 2;
data.defauiltMethod();
//private 호출 불가
data.privateField = 3;
data.privateMethod();
data.innerAccess();
}
}
=> private, defauilt는 호출이 안된다.
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 기본] 캡슐화(Encapsulation) (0) | 2024.07.08 |
---|---|
[Java 기본] 접근 제어자 사용 - 클래스 레벨 (0) | 2024.07.08 |
[Java 기본] 접근 제어자 종류 (0) | 2024.07.08 |
[Java 기본] 접근 제어자 이해 (0) | 2024.07.05 |
[Java 기본] 패키지 (1) | 2024.07.05 |