-
[JAVA 25] 자바 ① 접근 제한자 ( Access Modifier ) (public / protected / default / private)Language/Java 2018. 2. 13. 20:52반응형
1) 접근 제한자 ( Access Modifier )
(1) public
접근제한이 없다.
1234567891011121314151617181920package modi.fier;public class AMS2{ // publicpublic String str = "BIT COIN";public AMS2(){System.out.println("생성자 AMS2");}public void m(){System.out.println("메소드 m");}public static void main(String[] args){AMS2 ams2 = new AMS2();System.out.println("ams2.str : " + ams2.str);ams2.m();}}cs public 이 붙은 클래스는 같거나 다른 패키지에 있는
접근 제한자가 같거나 다른 클래스가 자원들을 가지고 갈 수 있다.
(2) protected
같은 패키지 안이라면 접근이 가능하다.
다른 패키지 의 상속관계 자식은 접근이 가능하다.
1234567891011121314151617181920package modi.fier;public class AMS3{ // Class ( 클래스 ) 에는 protected 가 불가능 하다.protected String str = "BIT COIN";protected AMS3(){System.out.println("생성자 AMS3");}protected void m(){System.out.println("메소드 m");}public static void main(String[] args){AMS3 ams3 = new AMS3();System.out.println("ams3.str : " + ams3.str);ams3.m();}}cs 123456789101112package other.folder; // (같은 폴더) 같은 패키지는 가능하다.// (다른 폴더) 다른 패키지시에는 상속 관계만 가능하다.import modi.fier.AMS3;class AMSUser3 extends AMS3{ // public , default 가능하다.public static void main(String[] args){AMSUser3 ams3 = new AMSUser3();System.out.println("ams3.str : " + ams3.str);ams3.m();}}cs 다른 패키지에 있더라도 ,
상속 관계의 자식은 protect 접근 제한자가 붙은 부모의 자원들을 가지고 사용할 수 있다.
(3) default
같은 패키지 안에서 접근이 가능하다.
12345678910111213141516171819package modi.fier;class AMS1{ // Access Modifier Study 1String str = "BIT COIN"; // default 는 접두사가 없는 것을 의미한다.AMS1(){System.out.println("생성자 AMS1");}void m(){System.out.println("메소드 m");}public static void main(String[] args){AMS1 ams1 = new AMS1();System.out.println("ams1.str : " + ams1.str);ams1.m();}}cs 12345678910111213141516package modi.fier; // 같은 패키지import modi.fier.AMS1; // AMS1 을 가져오기 위해서 import 한다.class AMSUser1{AMSUser1(){ // AMS1 의 자원들을 이용하려 한다.AMS1 ams1 = new AMS1();System.out.println("ams1.str : " + ams1.str);ams1.m();}public static void main(String[] args){new AMSUser1();}}다른 패키지에서 접근시
만약 다른 폴더 즉, 다른 패키지에서 접근을 하려 하면 에러가 나옵니다.
자세한 내용은 밑에 <상세 내용 보기>를 클릭해 주세요.
(4) private자신의 클래스 안에서만 접근이 가능하다.
1234567891011121314151617181920package modi.fier;class AMS4{ // Class ( 클래스 ) 에는 private 가 불가능 하다.private String STR = "BIT COIN"; // 상수는 대문자로 표현한다.private AMS4(){System.out.println("생성자 AMS4");}private void m(){System.out.println("메소드 m");}public static void main(String[] args){AMS4 ams4 = new AMS4();System.out.println("ams4.STR : " + ams4.STR);ams4.m();}}cs 다른 클래스에서 접근이 안된다.
자세한 내용은 밑에 <자세한 내용 보기>를 클릭해 주세요.
cf 1) 범위가 넓은 순서
public > protected > default > private
cf 2) 접근제한이 강력한 순서
public < protected < default < private
cf 3) class 앞에는 public 과 default 만 가능하다.
반응형'Language > Java' 카테고리의 다른 글
[JAVA 29] 자바 ③ 수정 제한자 ( final ) (0) 2018.02.14 [JAVA 26] 자바 ② 소유 제한자 ( static ) (0) 2018.02.14 [JAVA 24] 자바 제한자 ( Modifier ) 접근제한자 / 소유제한자 / 수정제한자 / 추상제한자 / 기타제한자 (0) 2018.02.13 [JAVA 23] 자바 super ( 슈퍼 ) (0) 2018.02.13 [JAVA 22] 자바 this ( 디스 ) (0) 2018.02.13