엄코딩의 개발 일지

인터페이스 


- 자바에서 인터페이스(interface)는 객체의 사용 방법을 정의한 타입



인터페이스의 역할 


- 개발 코드와 객체가 서로 통신하는 접점 역할 : 개발 코드가 인터페이스의 

  메소드를 호출하면 인터페이스는 객체의 메소드를 호출. 그렇기 때문에 

  개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 

  알고 있으면 된다.



*개발 코드가 직접 객체의 메소드를 호출하면 간단한데, 

왜 중간에 인터페이스를 둘까?**



 - 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해서이다.

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

따라서, 개발 코드 측면에서는 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점을 가지게 된다.





-'이것이 자바다'-신용권  참고







interface 인터페이스명{


//상수

타입 상수명 = 값;


//추상 메소드

타입 메소드명(매개변수,...);


//디폴트 메소드

default 타입 메소드명(매개변수,...){...}


//정적 메소드

static 타입 메소드명(매개변수){...}


}



상수 필드 


- 인터페이스는 객체 사용 설명서이므로, 런타임 시 데이터를 저장할 수 있는 필드를

  선언할 수 없다.

  하지만, 상수 필드는 선언할 수 있다. 상수는 인터페이스에 고정된 값으로 런타임     시에 데이터를 바꿀 수 없다. ( 단, 상수 선언과 동시에 초기화해야한다. )



추상 메소드


- 추상메소드는 객체가 가지고 있는 메소드를 설명한 것으로, 호출할 때 어떤 

  매개값이 필요하고, 리턴 타입이 무엇인지만 알려준다.

  ( 실제 실행부는 객체( 구현 객체 )가 가지고 있다. )



디폴트 메소드


- 인터페이스에 선언되지만 사실은 객체( 구현객체 )가 가지고 있는 인스턴스 

  메소드. ( 기존 인터페이스를 확장해서 새로운 기능을 추가하기 위함. )



정적 메소드 


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





1) 인터페이스 생성





2) 인터페이스 구현 클래스



** RemoteControl에는 3개의 추상 메소드가 있기 때문에 Television은 이 추상 메소드들에 대한 실체 메소드를 가지고 있어야 한다. **







** 구현 클래스에서 인터페이스와 추상 메소드들에 대한 실체 메소드를 작성할 때 주의할 점은 인터페이스의 모든 메소드는 기본적으로 public 접근 제한을 갖기 때문에 public보다 더 낮은 접근 제한으로 작성할 수 없다. **



3) 인터페이스 사용



4) 실행 결과






[참고 자료 및 문헌]

이것이 자바다(신용권의 Java 프로그래밍 정복)