•
추상 메서드만 가질 수 있다 (메서드 몸체가 없다)
→ 자식 클래스가 구현해야 한다.
•
implements 사용
•
객체 생성이 불가하다. → 참조 변수 사용가능
예제 코드
interface Printable{
// OS가 만든 기본 규격 드라이버
// 기준을 만들어주면 하청/협력사들이 printable 인터페이스에 맞춰서 드라이버 생산
public abstract void print(String doc);
}
Java
복사
class SPrinterDriver implements Printable {
// 삼성이 만든 드라이버
@Override
public void print(String doc){
System.out.println("삼성 프린터입니다.");
System.out.println(doc);
}
}
Java
복사
class LPrinterDriver implements Printable {
// LG가 만든 드라이버
@Override
public void print(String doc){
System.out.println("LG 프린터입니다.");
System.out.println(doc);
}
}
Java
복사
public class Interface {
public static void main(String[] args) {
Printable prn = new SPrinterDriver();
prn.print("출력해주세요.");
prn = new LPrinterDriver();
prn.print("출력해주세요.");
}
}
Java
복사
printable 인터페이스를 만들어서 내부에 print 메서드를 생성했다.
printable 인터페이스를 상속하면 무조건 print 메서드를 Override 해야한다.
왜 Interface를 많이 쓴다고 하는가? (좀 더 내용 다듬어야 함)
예시) DB에는 종류가 mySql, Mongo 등등 종류가 많다.
각 DB마다 필요한 데이터에 접근해서 데이터를 꺼내오는 과정이 다르다.
우리에게 필요한 것은 DB 갔다오기(); 메서드
인터페이스로 DB 갔다오기();를 만들면 DB 갔다오기(); 를 implements 한 클래스(mySql 데이터 접근, Mongo 데이터 접근)들을 따로 만들면 된다.
(이러한 클래스들은 자동으로 만들어주는 기능이 있다)
행동만 지정해주면 행동을 수행하는 객체는 스프링(DI)이 해줌