인터페이스

인터페이스란 두 사물 또는 세계가 간접적으로 만날 수 있게해주는 도구 또는 접점

자바 인터페이스란 객체 간의 조립을 간접적으로 조립하게 Has A 상속을 하게 해주는 접점 또는 도구

객체가 다른객체를 사용할때 이용하는 접점

코드의 일부분을 인터페이스로 약속해서 뺼 수 있다.

 

배너를 바꾸고싶다면                                                                                        (노란색이 인터페이스) 

옛날 배터리분리형 폰을 생각해보자. 

나중에 부품배터리 꽂아사용할 수있다. 

배터리를 사용하도록 약속되어있는 접근방법(노란색단자)을 제공해야한다.

다형성제공(배터디, 다양한제품을 쓸 수있다, 대용량 ,저용량, 기호나 사정,상황에맞게 배터리를 쓸수있다)

다양한 형태의 결합을 통해서 다양한 형태를 만들어 낼 수 있다.


public interface Banner

정의하는쪽 (제품쪽) : 코드의 일부분을 비워놓고 

구현하는쪽(부품) : 꽂아넣기 

 

인터페이스는 구현하는게 아니라 약속으로 정의한 00을 구현할 목록나열

약속으로 수반되어야할 목록을 무엇으로 구현해야하는지 정의

  • 멤버변수가없다. 
  • 다른 접근제한키워드를 쓰지않음 
  • Banner가 함수의 목록만 정의
  • 약속이기때문에 지금구현하지않는다.
  • 나중에 누군가 (YBMConsole)가 구현할 것 

public void setBanner(Banner banner)

기능을 분리하고자하는 쪽에서 기능을 정의해야한다.

정의한것을 다른쪽에서는 구현해야한다. 

interface Banner라는 약속으로 print와 printEnd를 구현한 객체를 private Banner banner;에 대입해주기 위한 도구

좌: 배터리를 꽂을수 있도록 변수를 두고/  가운데 : 배너 정의(배터리사용하는쪽) / 꽂아넣을수있도록 setter준비 

나중에 누군가가 banner 객체를 만들면 받아와야함 - 구현한쪽에서 꽂아줘야하니까 set메소드

(set()이없으면 내가 구현해야함)

내가만들지도,구현하지도않을것 - 들어올수있게하는방법이 set()메소드임.


인터페이스에 필요한 4가지 역할

  • 인터페이스는 약속을 정의하는것 (interface)
  • 마감(ExamConsole) : 인터페이스의 함수를 호출
  • 인터페이스구현(YBMBanner) : 
  • 구현한것을 꽂다 ybmConsole.setBanner(exam)

YBMBanner를 다른패키지에서 해야하지만 편의상 같은패키지에서 생성

ExamConsole에 ybmBanner를 꽂는것


YBMBanner가 Banner를 구현한다. 

배터리꽂아야 핸드폰을 킬 수 있다. (인터페이스를 구현하다)

인터페이스도 부모형이 참조가능하다.

 

 

약속을잡아놓고 구현하겠다 남이구현하게하겠다

1.자식만(onPrint) 2. 객체넘겨주는것 

꽂아주는작업 :인터페이스 

코드분리 ->누군가가가구현 -> 성질이 다양하게 바뀔 수있다. 

인터페이스는 다중상속을 대신한다

인터페이스를 구현하는 클래스가 반드시 새로운클래스일 필요없다.

 

자식만 구현하게하는것 / 객체로 누구나 구현할수있게하는것 

YBMExam이 Exam을 상속함 - onPrint는 자식이 구현하로했다.

약속해놓고 자식이 구현했다.

인터페이스로도 가능하다. 인터페이스목록으로하면 다른객체로서도 extends안해도 제공할 수있다. 

YBMExam이 인터페이스를 구현했다면 ? 

인터페이스는 클래스를 만드는게 중요한게아니라 구현했는지가 중요한것


클래스는 하나의 상속, 인터페이스 추가가능.

 


장소가 적합한가에대한 문제 

 

+ Recent posts