문제
다음 Java 코드는 외부에서 Account 클래스의 멤버 변수에 직접 접근하지 못하도록 접근제어자를 지정한 것이다. 빈칸에 들어갈 알맞은 접근 제어자 조합은?
Javaclass Account { <빈칸> int balance; <빈칸> void deposit(int amount) { balance += amount; } } public class Main { public static void main(String[] args) { Account a = new Account(); a.deposit(100); } }
① public, public ② private, private ③ private, public ④ protected, public
정답
3번
해설
정답: 3. 외부에서 직접 접근할 수 없도록 멤버 변수는 private으로, 외부에서 호출 가능해야 하는 메서드는 public으로 선언해야 한다.
오답 풀이
- 1번: balance가 public이면 외부에서 직접 접근 가능해 캡슐화가 깨진다.
- 2번: deposit까지 private이면 외부에서 호출할 수 없다.
- 3번: balance는 private, deposit은 public이 적절한 조합이다.
- 4번: protected는 동일 패키지나 하위 클래스에서 접근 가능하므로 외부 직접 접근 차단이 약하다.
보충 개념 캡슐화는 필드를 private으로 숨기고 public 메서드를 통해 통제된 접근을 허용하는 원리이다.