인터페이스
인터페이스란 ? 두 사물 또는 세계가 간접적으로 만날 수 있게해주는 도구 또는 접점
자바 인터페이스란 ? 객체 간의 조립을 간접적으로 조립하게 Has A 상속을 하게 해주는 접점 또는 도구
객체가 다른객체를 사용할때 이용하는 접점
코드의 일부분을 인터페이스로 약속해서 뺼 수 있다.
옛날 배터리분리형 폰을 생각해보자.
나중에 부품배터리 꽂아사용할 수있다.
배터리를 사용하도록 약속되어있는 접근방법(노란색단자)을 제공해야한다.
다형성제공(배터디, 다양한제품을 쓸 수있다, 대용량 ,저용량, 기호나 사정,상황에맞게 배터리를 쓸수있다)
다양한 형태의 결합을 통해서 다양한 형태를 만들어 낼 수 있다.
public interface Banner
정의하는쪽 (제품쪽) : 코드의 일부분을 비워놓고
구현하는쪽(부품) : 꽂아넣기
인터페이스는 구현하는게 아니라 약속으로 정의한 00을 구현할 목록나열
약속으로 수반되어야할 목록을 무엇으로 구현해야하는지 정의
- 멤버변수가없다.
- 다른 접근제한키워드를 쓰지않음
- Banner가 함수의 목록만 정의
- 약속이기때문에 지금구현하지않는다.
- 나중에 누군가 (YBMConsole)가 구현할 것
public void setBanner(Banner banner)
기능을 분리하고자하는 쪽에서 기능을 정의해야한다.
정의한것을 다른쪽에서는 구현해야한다.
interface Banner라는 약속으로 print와 printEnd를 구현한 객체를 private Banner banner;에 대입해주기 위한 도구
나중에 누군가가 banner 객체를 만들면 받아와야함 - 구현한쪽에서 꽂아줘야하니까 set메소드
(set()이없으면 내가 구현해야함)
내가만들지도,구현하지도않을것 - 들어올수있게하는방법이 set()메소드임.
인터페이스에 필요한 4가지 역할
- 인터페이스는 약속을 정의하는것 (interface)
- 마감(ExamConsole) : 인터페이스의 함수를 호출
- 인터페이스구현(YBMBanner) :
- 구현한것을 꽂다 ybmConsole.setBanner(exam)
YBMBanner를 다른패키지에서 해야하지만 편의상 같은패키지에서 생성
ExamConsole에 ybmBanner를 꽂는것
YBMBanner가 Banner를 구현한다.
배터리꽂아야 핸드폰을 킬 수 있다. (인터페이스를 구현하다)
인터페이스도 부모형이 참조가능하다.
약속을잡아놓고 구현하겠다 남이구현하게하겠다
1.자식만(onPrint) 2. 객체넘겨주는것
꽂아주는작업 :인터페이스
코드분리 ->누군가가가구현 -> 성질이 다양하게 바뀔 수있다.
인터페이스는 다중상속을 대신한다
인터페이스를 구현하는 클래스가 반드시 새로운클래스일 필요없다.
YBMExam이 Exam을 상속함 - onPrint는 자식이 구현하로했다.
약속해놓고 자식이 구현했다.
인터페이스로도 가능하다. 인터페이스목록으로하면 다른객체로서도 extends안해도 제공할 수있다.
YBMExam이 인터페이스를 구현했다면 ?
인터페이스는 클래스를 만드는게 중요한게아니라 구현했는지가 중요한것
클래스는 하나의 상속, 인터페이스 추가가능.
장소가 적합한가에대한 문제
'2021 Newlecture > JAVA' 카테고리의 다른 글
(추가정리) 추상클래스 와 인터페이스 (0) | 2021.04.11 |
---|---|
(추가정리) 상속 (0) | 2021.04.10 |
(추가정리)this키워드 (0) | 2021.04.10 |
(추가정리) 패키지와 static (0) | 2021.04.10 |
protected method() / 자식에게 부모 객체넘겨주기 (0) | 2021.04.07 |
Constructor Dependency Injection 생성자 종속성 주입 / abstract / protected (0) | 2021.04.06 |
추상화 / abstract class/ abstract method (0) | 2021.04.05 |
Is a , has a 상속 정리 / 함수 호출 관계/ 동적바인딩 / 부모형식의 참조변수 (0) | 2021.04.02 |