Java/6. 클래스 (Class)

Day 8 : 필드와 메소드의 접근 제한 (public / protected / default / private)

pancakemaker 2021. 10. 28. 16:11

package1내 A 클래스

package sec13.exam03_field_method_access.package1;

public class A {
	//①필드
	public int field1;
	int field2;
	private int field3;
	
	//③생성자
	public A() { //필드값 초기화
		field1 = 1; //같은 클래스 내에서는 모든 필드 접근 가능
		field2 = 1;
		field3 = 1;
		
		method1(); //같은 클래스 내에서는 모든 메소드 접근 가능
		method2();
		method3();
	}
	
	//②메소드
	public void method1() {}
	void method2() {}
	private void method3() {}
}

 

package2내 B 클래스

package sec13.exam03_field_method_access.package1;

public class B {
	//생성자
	public B() {
		A a = new A();
		a.field1 = 1; //public : 접근 가능
		a.field2 = 1; //default : 같은 패키지 내 접근 가능
		//a.field3 = 1; //private : 다른 클래스이므로 접근 불가
		a.method1(); //public
		a.method2(); //default
		//a.method3(); //private : 다른 클래스이므로 접근 불가
	}
}

 

package3내 C 클래스

package sec13.exam03_field_method_access.package2;

import sec13.exam03_field_method_access.package1.A;

public class C {
	//생성자
	public C() {
		A a = new A();
		a.field1 = 1; //public : 접근 가능
		//a.field2 = 1; //default : 접근 불가능 (다른 패키지에서 접근 불가)
		//a.field3 = 1; //private : 접근 불가
		
		a.method1(); //public : 접근 가능
		//a.method2(); //default : 접근 불가능 (다른 패키지에서 접근 불가)
		//a.method3(); //private : 접근 불가
	}
}