인터페이스(interface), 인터페이스 선언, 인터페이스의 기본 구성과 구현, 인터페이스의 특징

CODEDRAGON Development/Java

반응형


 

인터페이스(Interface)

·       인터페이스는 TV나 오디오의 리모콘이나 음식점의 메뉴판에 비유할 수 있습니다.

·       리모콘으로 채널을 조작하게 되는데 리모콘 자체가 무언가 보여주지는 않습니다. 또 메뉴판을 보고 원하는 음식을 주문하게 되는데 메뉴판 자체가 음식을 만들어주지는 않습니다.

·       사용자가 선택한 실제 TV프로그램은 전파를 타고 TV수신기를 통해 TV모니터상에 보여주게 됩니다. 사용자가 선택한 실제 음식은 주방에서 만들어져 나오게 됩니다.

·       리모콘과 메뉴판은 사용자가 주문할 수 있는 "서비스의 목록(기능 목록)"을 제공하고 있습니다.

·       다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다.

 

 

구분

구성요소

추상 클래스

추상 메소드와 생성자, 필드, 일반 메소드도 포함

인터페이스

추상 메소드와 상수만을 포함

 

 

 

인터페이스 선언

·       인터페이스 내에는 상수 또는 추상 메서드들만 정의가 가능합니다.

·       인터페이스를 사용하기 위해서는 일반 클래스에서 구현(implements)을 해야 합니다.

·       일반 클래스에서 "implements"라는 예약어로 특정 인터페이스를 구현하겠다고 명시해야 합니다

·       이렇게 한 후 명시한 인터페이스가 가지는 추상 메서드들은 구현 받은 클래스에서 하나도 빠짐없이 Overriding(재정의)해야 합니다.

·       인터페이스의 모든 필드는 public static final이어야 하며, 모든 메소드는 public abstract이어야 합니다. 하지만 생략할 수도 있습니다. 이렇게 생략된 제한자는 컴파일 시 자바 컴파일러가 자동으로 추가해 줍니다.

[접근제한] interface [인터페이스명] {

   public static final 상수;

   public abstract 추상메서드;

}

 

 

 

 

 

인터페이스의 기본 구성과 구현

인터페이스는 추상 클래스와 마찬가지로 자신이 직접 인스턴스를 생성할 수는 없습니다.

따라서 인터페이스가 포함하고 있는 추상 메소드를 구현해 줄 클래스를 작성해야만 합니다.

class 클래스이름 implements 인터페이스이름 {

}

 

 

인터페이스 정의 및 사용 단계

단계

설명

TODO 1

인터페이스 정의

TODO 2

class implements구현하고 인터페이스 추상 메소드 구체화

TODO 3

class의 객체 생성

TODO 4

객체를 통해 메소드 호출

 

 

//TODO 1: 인터페이스 정의(인터페이스 선언)

interface InterfaceTest {

//상수 또는 추상메서드만 정의 가능

static final int A = 100;

//abstract예약어는 생략 가능!

abstract int getA();

}

 

//TODO 2: class implements구현하고 인터페이스 추상 메소드 구체화

//implements라는 예약어로 인터페이스 구현

public class InterEx05 implements InterfaceTest{

 

//추상메서드 재정의

@Override

public int getA(){

return A;

}

public static void main(String[] args) {

//TODO 3: class 객체 생성

InterEx05 itex1 = new InterEx05();

//TODO 4: 객체를 통해 메소드 호출

System.out.println("getA(): "+itex1.getA());

}

}