# 인터페이스 정의 및 구현
interface 내부에 있는 메소드에 있는 public은 지워도 잘 작동하는데 class SmartPhone 내부 메소드에 있는 public은 지우면 작동을 안하네요.. 이유가 궁금합니다 ㅠㅠ
#### CODE <a class='btn btn-default' href='/codes/79515'>Link</a>
```
public class SmartPhoneTest {
public static void main(String[] args) {
SmartPhone sp = new SmartPhone("아이폰","010-2342-4232");
sp.call("010-1234-5678");
sp.ring();
}
}
interface Phone {
// targetNumber로 전화를 걸거야! 어떻게? 그건 아직 몰라!
void call(String targetNumber);
// 전화벨이 울릴거야! 어떻게? 그건 아직 몰라!
void ring();
}
class SmartPhone implements Phone {
String name;
String phoneNumber;
SmartPhone(String name, String phoneNumber){
this.name = name;
this.phoneNumber = phoneNumber;
}
public void call(String targetNumber){
System.out.printf("%s로 전화를 겁니다!\n", targetNumber);
}
public void ring(){
System.out.println("전화벨이 울립니다~");
}
}
```
#### INPUT
```
```
#### OUPUT
```
010-1234-5678로 전화를 겁니다!
전화벨이 울립니다~
```
sehongpark님의 답변
## 인터페이스의 경우 두 키워드
public과 abstract 키워드가 자동으로 추가됩니다
따라서
이를 구현하는 구현체 클래스는
반드시 public이어야 합니다
chlrytns94님의 답변
이해했습니다 감사합니다 ~