인터페이스

CHM·2022년 4월 18일
0

Java 기본

목록 보기
14/17

인터페이스

  • 프로그램 및 서버, 시스템 간 프로그램을 직접 실행하는 것이 아닌 중간에서 처리해주는 것.
  • 자바에서의 인터페이스 개념
    • 객체 지향 프로그래밍의 부품처럼 교체할 수 있는 특징을 이용
    • 호출코드 <=> 인터페이스 <=> 실행코드
    • 호출코드와 인터페이스는 하나지만, 실행 코드는 여러 개가 가능할 수 있다.
    • 기능 추가 및 실행코드를 수정하지 않아도, 실행코드만 교체 및 추가할 수 있는 기능

인터페이스 선언

  • 상수 + 메서드(추상 메서드로 정의)
interface 인터페이스명 {
   자료형 상수명 = 값;
   리턴타입 추상메서드 명();
}
  • 인터페이스명, 상수명, 메서드명 등 인터페이스의 모든 구성 멤버는 public 접근 제한자. static final, abstract 키워드를 빠뜨려도, 컴파일러가 자동으로 추가해준다.

  • 따라서 인터페이스 내의 모든 변수는 상수, 모든 메서드는 추상 메서드가 된다.

  • Java 8 버전부터는 상수, 추상 메서드에 추가해서 default 메서드, static 메서드를 선언할 수 있게 되었다.

    • 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() { };
}

인터페이스의 다형성

  • 다형성 : 다양한 자료형을 가질 수 있는 특성
  • 인터페이스를 구현한 구현 클래스는 인터페이스로 자동 형변환이 가능하다.
  • 따라서 인터페이스를 구현한 여러 클래스들은 객체로 생성해 같은 메서드를 실행해도, 결과가 다르게 실행되도록 구현된다.
  • 다형성 개념을 이용하는 이유 - 객체지향 개념의 핵심
    • 실행 프로그램을 직접 실행하는 것이 아닌 인터페이스를 통해 실행하게 되면, 구현체1의 코드를 변경할 필요 없이 구현체2로 교체하기만 하면 된다.(유지보수 및 관리의 이점)
# 인터페이스
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();
    }
}

0개의 댓글

관련 채용 정보