본문 바로가기

Programming/자바

생활코딩 자바 - 접근제어자

객체 안 메소드나 변수를 사용하는 권한에 차등을 주는 것 (클래스멤버의 접근제어자)

 

문법
  •  

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