# 리뷰: 인터페이스
```
// 소리내기
for (Sounding item : list) {
item.sound();
}
```
이건 어떤 문법인가요?
처음보는 for문입니다 ㅜ
#### CODE <a class='btn btn-default' href='/codes/25054'>Link</a>
```
import java.util.ArrayList;
public class InterfaceReview {
public static void main(String[] args) {
// 객체 생성
Dog d = new Dog();
Baby b = new Baby();
Tiger t = new Tiger();
Robot r = new Robot();
// 인터페이스 배열 생성
ArrayList<Sounding> list = new ArrayList<Sounding>();
list.add(d);
list.add(b);
list.add(t);
list.add(r);
// 소리내기
for(int i = 0; i<list.size(); i++) {
Sounding s = list.get(i);
s.sound();
}
}
}
/* 인터페이스 및 클래스를 작성하시오. */
interface Sounding {
public void sound();
}
class Dog implements Sounding {
public void sound() {
System.out.println("Dog: 멍멍!");
}
}
class Baby implements Sounding {
public void sound() {
System.out.println("Baby: 응애!");
}
}
class Tiger implements Sounding {
public void sound() {
System.out.println("Tiger: 어흥!");
}
}
class Robot implements Sounding {
public void sound() {
System.out.println("Robot: 삐빕!");
}
}
```
#### INPUT
```
```
#### OUPUT
```
Dog: 멍멍!
Baby: 응애!
Tiger: 어흥!
Robot: 삐빕!
```
sehongpark님의 답변
# foreach문
## 무엇?
질문하신 구문은 향상된 for문이라 불리는 foreach문 입니다.
```
// 소리내기 - 모든 list의 요소를 차례로 순회!
for (Sounding item : list) { // 차례로 꺼낸 요소를 변수 item에 연결!
item.sound(); // item 변수에 연결된 객체가 sound() 메소드를 수행!
}
```
## 언제 사용?
foreach문은 연속된 자료들을 순차적으로 순회 시 사용합니다.
## 무엇이 다름?
일반 for문보다 코드가 짧고 간결하여 자주 사용됩니다.
```
// 해당 배열을 모두 출력하고자 한다면?
int[] scores = { 88, 96, 72, 100 };
// 일반 for문
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]); // 출력
}
// foreach문 - scores의 아이템들을 차례로 순회!
for (int item : scores) { // 차례로 꺼내어진 원소를 item으로 담아 반복!
System.out.println(item);
}
```
## 구글링 키워드
"자바 foreach 문"으로 검색해보면, 다양한 정보를 얻을 수 있습니다!