접근권한 수식어(Access Modifier)

Agnes Park·2022년 2월 20일
1

JAVA

목록 보기
20/34

1. 접근권한 수식어(Access Modifier) 접근제한자

1) 종류: private, (default), protected, public
2) 기능 : 멤버 변수, 멤버메소드에 대한 접근 권한을 제한

3) private: '자기자신'이 선언된 클래스에서만 사용 가능
4) (default): '자기자신' + '같은 패키지'에 있는 클래스들에서는 사용 가능
5) protected: '자기자신' + '같은 패키지' + '상속받은 클래스' 에서 사용 가능
-> 다른 패키지의 클래스라도 '상속 받으면' 사용 가능하다
6) public: 어디서든 사용이 가능

사용범위: private < (default) < protected < public

※ 클래스에 붙는 접근제한자는 딱 두가지 입니다
: (default) , public

package com.lec.java.access01;

import com.lec.java.access02.Test02;

public class Access01Main {

	public static void main(String[] args) {
		System.out.println("접근권한 수식어(Access Modifier)");
		
		Test01 t1 = new Test01();
//		t1.privateNum = 10; 	// not visible (볼 수 없다)
		t1.defaultNum = 20;  
		t1.protectedNum = 30;
		t1.publicNum = 40;
//		t1.aaa = 50;	// cannot be resolved (이런 이름이 없다)

		
		// 다른 패키지(com.lec.java.access02)에 있는 클래스
		// 일단 다른 패키지 라면 import 부터 선행되어야 한다 // ctrl + shift + o
		Test02 t2 = new Test02();
//		t2.privateNum = 10;
//		t2.defaultNum = 20;
//		t2.protectedNum = 40;
		t2.publicNum = 50;

		// import 없이 full name 으로 사용 가능.
		com.lec.java.access02.Test3 t3 = new com.lec.java.access02.Test3();

		
	} // end main()

} // end class Access01Main
package com.lec.java.access01;

public class Test01 {

		private int privateNum;
		int defaultNum;
		protected int protectedNum;
		public int publicNum;
}
package com.lec.java.access02;

public class Test02 {

		private int privateNum;
		int defaultNum;
		protected int protectedNum;
		public int publicNum;
}
package com.lec.java.access02;

public class Test3 {

		private int privateNum;
		int defaultNum;
		protected int protectedNum;
		public int publicNum;
}

2. 클래스의 접근 권한 수식어: public, (default)

  1. public class: 어디에서나 인스턴스 생성이 가능한 클래스
    (주의) public 클래스의 이름은 .java 파일 이름과 반드시 같아야 함
  2. (default) class: 같은 패키지에 있는 클래스들에서만 인스턴스 생성이 가능
package com.lec.java.access03;

import com.lec.java.access04.TestPublic2;
//import com.lec.java.access04.MyDefault;	// 애시당초 import 부터 불가!

// 클래스의 접근 권한 수식어: public, (default)
// 1. public class: 어디에서나 인스턴스 생성이 가능한 클래스
//   (주의) public 클래스의 이름은 .java 파일 이름과 반드시 같아야 함
// 2. (default) class: 같은 패키지에 있는 클래스들에서만 인스턴스 생성이 가능

public class Access03Main {

	public static void main(String[] args) {
		System.out.println("public, default 클래스");
		
		TestPublic t1 = new TestPublic();
		
		MyDefault t2 = new MyDefault();
		
		TestPublic2 t3 = new TestPublic2();
		
//		MyDefault2 t4;	// cannot be resolved
		
	} // end main()

} // end class Access05Main

class A {
	
}
package com.lec.java.access03;

// 디폴트 클래스는 굳이 파일명과 같을 필요 없다.
class MyDefault {

}
package com.lec.java.access03;

public class TestPublic {

}
package com.lec.java.access04;

class MyDeafault2 {

}
package com.lec.java.access04;

public class TestPublic2 {

}

0개의 댓글