//선언부와 구현을 분리.(껍데기와 알맹이를 분리하여 사용한다.)//1. 메서드 선언(껍데기)interfaceI{publicabstractvoidmethod();}//2. 메서드 구현(알맹이)classBimplementsI {publicvoidmethod() {System.out.println("B클래스의 메서드 in interface I"); }}classCimplementsI {publicvoidmethod() {System.out.println("C클래스의 메서드 in interface I"); }}//mainpublicclassInterfaceTest {publicstaticvoidmain(String[] args) {A a =newA();//class A does not need to modify code.a.method(newB());a.method(newC());//C c = new C();//a.method(c); }}
2. 개발 시간을 단축할 수 있다. A->I(B).
A는 B가 완성될 때까지 기다리지 않고도 코드를 작성할 수 있다. B를 구현하지 않아도 Interface I 안에 B가 있다면 인터페이스(I)는 추상메서드의 집합이고 껍데기이다. 추상메서드 B를 구현하면 된다.
Q. iv는 어떻게 사용할 수 있는가?
A. (캡슐화)iv 직접 접근은 불가하며 private 제어자를 통해 메서드를 통해서만 접근할 수 있도록 한다. .
3. 변경에 유리한 유연한 설계가 가능하다. A->I(B), A->I(C), A->I(D)
4. 표준화가 가능하다. Java Application->JDBC(인터페이스 집합)->Oracle_DB , Java Application->JDBC->MySQL_DB
추후 JSP나 Spring을 배우면 JDBC를 다루게 된다.
5. 서로 관계없는 클래스들을 관계를 맺어줄 수 있다.
상속 계층도에서 공통점을 찾기 어려울 때, 공통적인 부분들을 골라서 인터페이스를 구현하게 한다.