본문 바로가기

Programming/JAVA

자바의 인터페이스

1. 인터페이스 (Interface)

: 자바에서 객체의 사용 방법을 정의한 타입으로 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킨다.

 

-> 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서 직접 객체의 메소드를 호출하지 않고 중간에 인터페이스를 둔다.

 

-> 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있다.

 

 

-인터페이스 선언

: 인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용한다.

[ public ] interface 인터페이스명 { 	
    // 상수
    [ public static final ] 타입 상수명 = 값;
    // ->상수는 public static final로 선언하는데 생략이 가능하며, 생략 시 자동적으로 컴파일 과정에서 붙게 된다.
    
    // 추상 메소드
    public abstract 메소드명(매개변수, ...);
    
    // 디폴트 메소드
    [ public ] default 타입 메소드명(매개변수, ...) { ... }
    
    // 정적 메소드
    [ public ] static 타입 메소드명(매개변수) { ... }
}

->인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없고 상수와 메소드만을 구성 멤버로 가진다.

 

+상수 필드 (Constant Field):

: 인터페이스는 객체 사용 설명서이므로 런타임 시 데이터를 저장할 수 있는 필드를 선언할 수 없다. 그러나 상수 필드는 선언이 가능하다.

 

+추상 메소드 (Abstract Method)

: 객체가 가지고 있는 메소드를 설명한 것으로 호출할 대 어떤 매개값이 필요하고, 리턴 타입이 무엇인지만 알려준다. 실제 실행부는 객체 (구현 객체)가 가지고 있다.

 

+디폴트 메소드 (Default Method)

: 인터페이스에 선언되지만 사실은 객체 (구현 객체)가 가지고 있는 인스턴스 메소드라고 생각해야 한다. 

 

+정적 메소드(Static Method)

: 디폴트 메소드와는 달리 객체가 없어도 인터페이스만으로 호출이 가능하다.

 

 

-인터페이스 구현

: 인터페이스는 추상 클래스와 마찬가지로 자신이 직접 인스턴스를 생성할 수 없기 때문에 인터페이스가 포함하고 있는 추상 메소드를 구현해 줄 클래스를 작성해야만 한다.

public class 구현클래스명 implements 인터페이스명 {
	// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}

 

*상속과 구현을 동시에 하는 방법

class 클래스명 extend 상위클래스명 implements 인터페이스명 { ... }

-> 인터페이스는 인터페이스로부터만 상속을 받을 수 있으며, 여러 인터페이스를 상속받을 수 있다.

 

*다중 인터페이스 구현

public class 구현클래스명 implements 인터페이스A, 인터페이스B {
	// 인터페이스 A에 선언된 추상 메소드의 실체 메소드 선언
	// 인터페이스 B에 선언된 추상 메소드의 실체 메소드 선언
}

 

※인터페이스의 장점

  1. 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능
  2. 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축 가능
  3. 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍 가능

 

 

'Programming > JAVA' 카테고리의 다른 글

자바의 추상 클래스  (0) 2020.01.07
자바 상속의 개념  (0) 2020.01.03
자바의 접근 제한자  (0) 2019.12.30
자바의 클래스  (0) 2019.12.27
자바의 참조 타입과 배열  (0) 2019.12.23