클래스의 접근을 제한하는 역할을 한다. 접근 제한자의 종류는 4가지다.

public protected default private의 순서로 제한의 정도가 강하다. 접근 제한자를 사용하는 목적은 다양하다. 객체에 포함된 특정한 데이터를 보호해야 하는 경우 접근제한자를 사용해서 그 정도를 조절할 수 있다.

 

case1 : 모든 패키지에 제한 없음

 

package classes;

public class SpSc {

 

public String vPublic = "Public MV 확인";

protected String vProtected ="Protected MV 확인";

/*default*/ String vDefault = "Default MV 확인";

private String vPrivate ="Private MV 확인";

 

public void mPublic(){

System.out.println("Public MM 확인");

}

 

protected void mProtected(){

System.out.println("Protected MM 확인");

}

 

/*default*/void mDefault(){

System.out.println("Default MM 확인");

}

 

private void mPrivate(){

System.out.println("Private MM 확인");

}

 

public static void main(String[] args) {

SpSc sPsC = new SpSc();

System.out.println(sPsC.vPublic);

System.out.println(sPsC.vProtected);

System.out.println(sPsC.vDefault);

System.out.println(sPsC.vPrivate);

 

sPsC.mPublic();

sPsC.mProtected();

sPsC.mDefault();

sPsC.mPrivate();

}

}

 

case 2 : 같은 패키지 내에 있으나 다른 클래스에 있는 경우 private 에러 발생

 

package classes;

class SpDc {

public static void main(String[] args) {

SpSc sPsC = new SpSc();

System.out.println(sPsC.vPublic);

System.out.println(sPsC.vProtected);

System.out.println(sPsC.vDefault);

System.out.println(sPsC.vPrivate); //에러

 

sPsC.mPublic();

sPsC.mProtected();

sPsC.mDefault();

sPsC.mPrivate(); //에러

}

}

 

case 3 : 다른 패키지에서 상속 시 private, default 에러

 

import classes.SpSc;

class DpIc extends SpSc{

public static void main(String[] args) {

DpIc dPiC = new DpIc();

System.out.println(dPiC.vPublic);

System.out.println(dPiC.vProtected);

System.out.println(dPiC.vDefault); //에러

System.out.println(dPiC.vPrivate); //에러

 

dPiC.mPublic();

dPiC.mProtected();

dPiC.mDefault(); //에러

dPiC.mPrivate(); //에러

}

}

 

case 4: 다른 패키지 & 상속 X 경우 private, default, protected 에러

 

import classes.SpSc;

class DpDc {

public static void main(String[] args) {

SpSc dPdC = new SpSc();

System.out.println(dPdC.vPublic);

System.out.println(dPdC.vProtected); //에러

System.out.println(dPdC.vDefault); //에러

System.out.println(dPdC.vPrivate); //에러

 

dPdC.mPublic();

dPdC.mProtected(); //에러

dPdC.mDefault(); //에러

dPdC.mPrivate(); //에러

}

}



+ Recent posts