java
JAVA - public, private, protected 접근 제어자
접근 제어자를 접근 지시자라고도 부릅니다. 접근 제어자는 다음 표를 사용할 수 있습니다.
접근 제어자 | 설 명 |
---|---|
public | 같은 패키지에 있는 모든 곳에서 접근이 가능 |
private | 클래스 내에서만 접근이 가능 |
protected | 자기 패키지 내 이거나 상속했을 때만 접근이 가능 |
default | 자기 패키지 내에서 접근이 가능 |
// ex.1)
public class Ex01 {
public static void main(String[] args) {
AA aa = new AA();
System.out.println(aa.a);
// 클래스 내에서만 접근이 가능하므로 오류가 뜹니다.
System.out.println(aa.b);
}
}
class AA{
public int a = 10;
private int b = 20;
}
// ex.2)
public class Ex01 {
Ex01(){
CC cc = new CC();
// public 이므로 모든 곳에서 접근이 가능합니다.
System.out.println("CC.a" + cc.a);
// default 는 자기 패키지 내에 접근이 가능합니다.
System.out.println("CC.b" + cc.b);
// private 는 클래스 내에서만 접근 가능하므로
// 오류가 발생합니다.
System.out.println("CC.c" + cc.c);
// protected 는 패키지 내, 상속 했을 때만 접근이 가능합니다.
System.out.println("CC.d" + cc.d);
}
public static void main(String[] args) {
new Ex01();
}
}
class CC {
public int a = 10;
int b = 20;
private int c = 30;
protected int d = 40;
}
다음은 파일 두 개를 만들고 패키지를 다르게 했을 때의 결과입니다.
// ex.3)
import com.nt.CC;
public class Ex01 {
Ex01(){
CC cc = new CC();
// public
// 모든 접근이 가능하므로 오류가 없습니다.
System.out.println("CC.a" + cc.a);
// default
// 자기 패키지 내에서만 접근이 가능하므로 오류가 발생합니다.
System.out.println("CC.b" + cc.b);
// private
// 클래스 내에서만 접근이 가능하므로 오류입니다.
System.out.println("CC.c" + cc.c);
// protected
// 패키지 내이거나 상속했을 때만 접근이 가능하므로 오류입니다.
System.out.println("CC.d" + cc.d);
}
public static void main(String[] args) {
new Ex01();
}
}
package com.nt;
public class CC {
public int a = 10;
int b = 20;
private int c = 30;
protected int d = 40;
}
다음은 패키지 내 두 개의 파일을 만들어 테스트 해보았습니다.
// ex.4)
public class Ex01 {
Ex01(){
DD dd = new DD();
// public
// 모든 접근이 가능하므로 오류가 없습니다.
System.out.println("dd.a" + dd.a);
// default
// 자기 패키지 내에서만 접근이 가능하므로 오류가 없습니다.
System.out.println("dd.b" + dd.b);
// private
// 클래스 내에서만 접근이 가능하므로 오류입니다.
System.out.println("dd.c" + dd.c);
// protected
// 자기 패키지 내이거나 상속했을 때만 접근이 가능하므로 오류가 없습니다.
System.out.println("dd.d" + dd.d);
}
public static void main(String[] args) {
new Ex01();
}
}
public class DD {
public int a = 10;
int b = 20;
private int c = 30;
protected int d = 40;
}
0 댓글