# 연습문제 E - 자바 API
## 13 접근 제한자와 게터 세터
---
#### 접근 제한자
- 접근 제한자란, 외부 접근을 제어하는 키워드다.
- 접근 제한자는 private/default/protected/public 이 있다.
- private은 비공개, public은 완전 공개를 의미한다.
#### 게터 & 세터
- private 필드는 외부 접근이 불가능하다.
- 게터를 사용하면 private 필드를 우회적으로 가져올 수 있다.
- 세터를 사용하면 private 필드를 우회적으로 변경할 수 있다.
#### 스코프와 this
- 스코프(scope)란, 변수의 활동 영역이다.
- 메소드 스코프(method scope)는 스코프가 메소드 내부인 것이다.
- 클래스 스코프(class scope)는 스코프가 클래스 내부인 것이다.
- this 키워드는 주체 객체를 가리키는 레퍼런스 변수다.
- this를 사용하면 같은 이름의 필드와 파라미터를 구분할 수 있다.
## 14 자바 API
---
#### 자바 API
- 자바 API란 미리 만들어진 도구(클래스)이다.
- 자바 API는 패키지를 통해 제공된다.
- 자바 API 사용법은 문서(https://docs.oracle.com/javase/8/docs/api/)를 통해 확인할 수 있다.
#### 패키지
- 패키지란, 소스코드를 담는 디렉토리이다.
- 패키지는 관련 코드를 묶거나, 같은 이름의 코드를 구분하기 위해 사용한다.
#### Random & ArrayList
- Random은 난수 생성을 위한 클래스다.
```
// API 불러오기
import java.util.Random;
// 객체 생성
Random random = new Random();
// [0:N) 사이의 임의의 정수 생성
int N = 10;
int randNum = random.nextInt(N); // 0~9 사이의 정수
```
- ArrayList는 객체를 저장하기 위한 클래스다.
```
// API 불러오기
import java.util.ArrayList;
// 객체 생성
ArrayList<String> list = new ArrayList<String>();
// add()
list.add("Kim"); // list -> { "Kim" }
list.add("Lee"); // list -> { "Kim", "Lee" }
list.add("Park"); // list -> { "Kim", "Lee", "Park" }
// set()
list.set(1, "Choi"); // list -> { "Kim", "Choi", "Park" }
// size()
System.out.println(list.size()); // 3
// get()
System.out.println(list.get(2)); // Park
// remove()
String removed = list.remove(1); // list -> { "Kim", "Park" }
System.out.println(removed); // Choi
```
## 확인하기
---
<div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5d08717ccec9cd00147ca2a7" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5d08717ccec9cd00147ca2a7/q/1?method=iframe"></iframe></div></div>