자바의 인터페이스에 대해서 자세히 설명해 주신 블로그 글 ( https://www.charlezz.com/?p=768 )이 있어서 그에 대해 공부하고 작성한 글이다.
- 인터페이스(interface)는 자바 프로그래밍 언어에서 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. (이들은 프로토콜과 비슷하다.)
출처 : https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_(%EC%9E%90%EB%B0%94)
public int sum(int a, int b) {
return a+b;
}
public interface Calculator {
int sum(int a , int b);
}
public class CalculatorImpl implements Calculator {
@Override
public int sum(int a, int b) {
return a+b;
}
}
Calculator calc = new CalculatorImpl();
public class CalculatorPlus3 implements Calculator {
@Override
public int sum(int a, int b) {
return a+b+3;
}
}
cf) 이벤트: UI에 적용되는 사용자들의 반응 (ex) 위젯을 클릭, 텍스트 입력, 드래그
public interface MyEventListener {
void onEvent();
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listener.onEvent();
}
MyEventListener listener = new MyEventListener() {
@Override
public void onEvent() {
Toast.makeText(MainActivity.this, "onEvent",Toast.LENGTH_SHORT).show();
}
};
}
listener라는 MyEventListener객체를 만든 상황. 클래스 없이 바로 interface만으로도 객체를 생성가능. 이는 이름이 없는 클래스이기 때문에 익명클래스 or 무명클래스 라고 함.
보통 View.setOnclickListener(new OnClickListener(){…}) 이런식으로 View에 리스너를 달음. 대표적인 무명클래스를 이용하는 방법 중 하나.
listener 객체를 통해 onEvent()를 호출 -> 무명클래스가 이벤트를 잘 전달받는지 확인.