package ch07_accessA;

/*
 * 접근 제한자
 * → 다른 class 에서 class 또는 class 멤버의 접근을 허용할 지 결정.
 *   > public    : 모든 class 에서 접근 가능.
 *     protected : 같은 package, 상속받은 하위 class에서 접근 가능.
 *     default   : 같은 package 내에서만 접근 가능. 
 *     private   : class 안에서만 접근 가능.
 *     
 *             class 내부   같은 package    하위 class   다른 package
 * public          O             O              O             O
 * protected       O             O              O             X
 * default         O             O              X             X
 * private         O             X              X             X
 */

public class AreaOne {
	
	public static void main(String[] args) {
		
		First f1 = new First();
		f1.pubData = 1;
		f1.proData = 2;
		f1.defData = 3;
		//f1.priData = 4; Error
		f1.defaultMethod();
		f1.publicMethod();
		
		System.out.println();
		
		Second s1 = new Second();
		s1.pubData = 1;
		s1.proData = 2;
		s1.defData = 3;
		//s1.priData = 4; Error
		s1.defaultMethod();
		s1.publicMethod();
		
		
		
	}
	
}
package ch07_accessA;

public class First {
	public int pubData;
	protected int proData;
	int defData;
	private int priData;
	
	void defaultMethod() {}
	
	public void publicMethod() {}
	
}
package ch07_accessA;

class Second {
	public int pubData;
	protected int proData;
	int defData;
	private int priData;
	
	void defaultMethod() {}
	
	public void publicMethod() {}
	
}