객체 안 메소드나 변수를 사용하는 권한에 차등을 주는 것 (클래스멤버의 접근제어자)
문법
class A {
public String y() { //어디서든지 메소드 호출 가능
return "public void y()";
}
private String z() { //클래스 밖에서 사용 불가능, 같은 클래스에서만 사용 가능 (ex. AccessDemo1)
return "public void z()";
}
public String x() {
return z(); //x를 호출해 z를 다른 클래스에서 간접 호출은 가능
}
}
public class AccessDemo1 {
public static void main(String[] args) {
A a = new A();
System.out.println(a.y()); //System.out.println(a.z()); //오류
System.out.println(a.x());
}
}
//
public void y()
public void z()
사용 이유
class Calculator {
private int left, right; //사용자가 변수 직접 변경 못 하도록 함
public void setOprands(int left, int right) {
this.left=left;
this.right=right;
}
private int _sum() {
return this.left + this.right; //내부적 계산은 사용자들이 접근 못 하도록 함
}
public void sumDecoPlus() {
System.out.println("++++"+_sum()+"++++");
}
public void sumDecoMinus() {
System.out.println("----"+_sum()+"----");
}
}
public class CalDemo {
public static void main(String[] args) {
Calculator c1 = new Calculator();
c1.setOprands(10, 20);
c1.sumDecoPlus();
c1.sumDecoMinus();
세밀한 제어
같은 클래스 | 같은 패키지 | 다른 패키지 서브 클래스 (=상속된 클래스인 경우) |
관계 없음 | |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
클래스의 접근제어자
public & deafult 총 두개
public : 다른 패키지 클래스에서도 사용 가능
default : 같은 패키지에서만 사용 가능 (다른 패키지에서는 import 하더라도 불가능)
- public class 이름 => 소스코드의 파일명과 일치해야 함
=> 하나의 소스코드에는 하나의 public class만 가능
'Programming > 자바' 카테고리의 다른 글
생활코딩 자바 - final (0) | 2022.04.08 |
---|---|
생활코딩 자바 - abstract (0) | 2022.04.08 |
생활코딩 자바 - API (0) | 2022.04.07 |
생활코딩 자바 - 패키지 ?? (0) | 2022.04.07 |
생활코딩 자바 - 클래스패스 ?? (0) | 2022.04.06 |