자바에서 접근제어자는 클래스와 클래스의 멤버들(필드, 메소드, 생성자)를 사용할 때, 접근을 할 수 있는 범위를 지정해주는 역할을 한다.
(코딩을 하면서 정말 수도 없이 써봤지만, 한번쯤 정리를 해서 개념을 확실히 잡는게 좋을것이라 생각이 들어서 이렇게 정리해봅니다..ㅎㅎ^^)
public class Test { // public class
}
class Test {// default class
}
package pk1;
public class Test{
public int i; //public으로 선언이 되어 있음
}
package pk2; //다른 패키지에 선언이 됨
public class Test{
public static void main(String[] args){
i=20; // public으로 선언이 되었기 때문에 접근이 가능함.
}
}
package pk1;
public class Test{
private int i; //private으로 선언이 되어 있음
}
package pk1;
public class Test{
public static void main(String[] args){
i=20; // Error--> i는 private으로 선언이 되어 있기에 같은 클래스가 아니면 접근이 불가능함
}
}
package pk1;
public class Test1{
protected int i; //private으로 선언이 되어 있음
}
package pk1;
public class Test2{
public static void main(String[] args){
i=20; // 같은 패키지 않이기 때문에 접근이 가능함
}
}
OR
package pk1;
public class Test1{
protected int i; //private으로 선언이 되어 있음
}
package pk2;
public class Test2 extends Test1{ //상속을 진행하였음
public static void main(String[] args){
i=20; // 다른 패키지 이지만 Test1을 상속하였기에 접근이 가능함.
}
}
package pk1;
public class Test1{
protected int i; //private으로 선언이 되어 있음
}
package pk1;
public class Test2{ //상속을 진행하였음
public static void main(String[] args){
i=20; // 같은 패키지의 클래스에서 접근이 가능함!.
}
}