: 자원(변수, 메서드 등)에 접근할 수 있는 권한을 설정한다.
: 객체의 변수에 잘못된 정보가 들어오면 메서드에서 에러가 난다.
: 그래서 변수의 변화로 메서드 에러를 방지하기 위해
: 클래스 변수 선언과 초기값에
: 접근제어자 private 를 사용하여 방지한다.
Setter를 사용한다Getter를 사용한다.메서드는 로직을 짤 수 있어서 들어오면 안되는 변수의 값을 막을 수 있게 안정장치를 생성할 수 있다.
public class AccessModifier {
public static void main(String[] args){
Calculator c1 = new Calculator();
c1.divide();
// public로 이기 때문에 매서드는 접근 가능
// 민약 변수가 public으로 바뀌고
// c1.num2 =0; 넣으면 에러가 생김
// 컴퓨터에서는 n/0은 계산할 수 없음
// 누구나 접근해서 바꿔버릴 수 있게 한 것이 문제임
// private를 이용해 Calculator의 데이터를 보호할 수 있다.
// c1.num2 =0;이 num1이 private이라 접근 불가능
c1.setNum1(10); // setNum1() 매서드는 Public이라 접근 가능
c1.setNum2(0);
// 결과 : 0은 나눌 수 없습니다. 가본값인 1로 초기화합니다.
// >> 잘못된 변수 접근값을 막을 수 있음
c1.divide();
// 결과 : 10
// (10/0) 컴퓨터 세계에서 에러이지만 Num2를 1로 조정해서 10라는 결과가 나옴
// System.out.println(c1.num1);
// private이 있어 바로 출력 불가
System.out.println(c1.getNum1());
}
}
public class Calculator{
// 클래스의 변수 초기값 고정
private int num1 = 10;
private int num2 = 2;
public void divide (){
System.out.println(num1/num2);
}
// setter, getter
// 1. setter
public void setNum2(int num1){
this.num1 = num1
}
// 2. setter
public void setNum2(int num1){
if(num2 == 0){
System.out println("0은 나눌수 없습니다. 기본값인 1로 초기화합니다.");
num2 = 1;"
}
this.num2 = num2
}
// 3. getter
public int getNum1(){
return num1;
}
}
- 객체 변수 만들 때는 외부의 접근으로 모든 메서드에 영향주지 않게 private를 사용하여 접근을 막는다
- 변수에 접근이 필요하면 getter setter 메서드를 public으로 만들어 사용한다.