interface 인터페이스명 {
자료형 상수명 = 값;
리턴타입 추상메서드 명();
}
인터페이스명, 상수명, 메서드명 등 인터페이스의 모든 구성 멤버는 public 접근 제한자. static final, abstract 키워드를 빠뜨려도, 컴파일러가 자동으로 추가해준다.
따라서 인터페이스 내의 모든 변수는 상수, 모든 메서드는 추상 메서드가 된다.
Java 8 버전부터는 상수, 추상 메서드에 추가해서 default 메서드, static 메서드를 선언할 수 있게 되었다.
클래스 간에는 상속, 인터페이스와 클래스는 구현
다중 구현 가능
인터페이스 간의 상속(다중 상속) 가능
인터페이스의 메서드는 반드시 구현해야 한다.
객체 생성 불가하며, 구현된 클래스로 객체 생성한다.
# 인터페이스
public interface Printer {
void print();
}
public interface Scanner {
void scan();
}
public interface fax {
void fax();
}
# 구현체
public class Complexer implements Printer, Scanner, Fax {
public void print() { };
public void scan() { };
public void fax() { };
}
# 인터페이스
public interface DBProgram {
void dbProcess();
}
# 구현체
public class OracleProgram implements DBProgram {
@Override
public void dbProcess() {System.out.println("Oracle process")};
}
public class MySQLProgram implements DBProgram {
@Override
public void dbProcess() {System.out.println("MySQL process")};
}
public class MSSQL implements DBProgram {
@Override
public void dbProcess() {System.out.println("MSSQL process")};
}
# main문 실행
public class Main {
public static void main(String[] args) {
DBProgram db = new OracleProgram();
# DBProgram db = new MySQLProgram(); // 구현체만 변경하면 된다!!!
# DBProgram db = new MSSQLProgram(); // 구현체만 변경하면 된다!!!
db.dbProcess();
}
}