접근 제어자는 클래스나 변수, 메서드의 접근을 제어하기 위해 적어주는 예약어
private -> default -> protected -> public 순으로 보다 많은 접근을 허용한다.

private이 붙은 변수, 메서드는 해당 클래스에서만 접근이 가능
접근 제어자를 별도로 설정하지 않는다면 접근 제어자가 없는 변수, 메서드는 default 접근 제어자가 되어 해당 패키지 내에서만 접근이 가능
protected가 붙은 변수, 메서드는 동일 패키지의 클래스 또는 해당 클래스를 상속받은 다른 패키지의 클래스에서만 접근이 가능하다.
public 접근제어자가 붙은 변수, 메서드는 어떤 클래스에서라도 접근이 가능하다.
다른 클래스 , 패키지에서도 private 변수에 접근할 수 있도록 해주는 메서드는??
답 : getter / setter
protected로 구현된 메소드는 반드시 자식클래스가 override를 해야한다?
답 : X
abstract메서드의 접근 제어자는 private일 수 있다/없다
답 : X
접근제어자를 사용하는 궁극적 목표는 캡슐화이다 그렇다면 spring을 이용한
개발 중 사용했던 캡슐화의 대표적 예시는?
답 : DTO, model, domain, JPA entity
public 메소드는 private 멤버와 프로그램 사이의 ( ) 역할을 수행한다고 할 수 있습니다.
( )안에 답을 넣으시오.
답 : 인터페이스(interface)
네모에 들어갈 수 있는 접근제어자는?

답 : protected, public
class Calculator{
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()+"----");
}
}
class Main {
public static void main(String[] args) {
Calculator c1 = new Calculator();
c1.setOprands(10, 20);
c1.sumDecoPlus();
c1.sumDecoMinus();
}
}
답 : NO
이유 : 멤버변수가 private로 지정되어 있어야 함
답 : ++++30++++
----30----
1 class Hello{
2 protected static void hello(){
3 System.out.println("HELLO!");
4 }
5 }
6
7 class Hi{
8 private static void hi(){
9 System.out.println("HI!");
10 }
11 }
12
13 class Main02{
14 public static void main(String[] args) {
15 Hello.hello();
16 Hi.hi();
17 }
18 }
답 : 에러
답 : 16번에서 에러
이유 : private 로 지정되어있어서 호출 불가능