티스토리 뷰

Back-end/Java

인터페이스

douStory 2021. 8. 5. 09:06
728x90

어떤 클래스가 인터페이스를 사용한다면, 그 클래스는 반드시 그 인터페이스 매소드를 사용해야한다..!!

interface I {
	public void z();
}

class A implements I{
	public void z(){}
}

특정 클래스(classA) 를 특정 인터페이스(interface I)결합시키면

인터페이스 안에있는 매소드(z())를 반드시 구현하도록 강제한다.

- 인터페이스 : 일 시키는 애..

 

-> classA는 interfaceI를 구현한다..

 

그럼 인터페이스는 언제 사용하는 것인가?

여러 개발자들이 함께 참여하는 프로젝트일경우 구현을 강제하여

약속한대로 개발이 가능하도록 돕는 역할을 한다.

 

 

인터페이스에서 선언한 변수는 모두 컴파일 과정에서 상수로 자동 변환됨

인터페이스에서 선언한 메소드는  모두 추상메소드로 변환됩니다.

Calculator에는 왜 abstract 가 붙었을까?

Calculator에서 

add(); 와 substract(); 구현했기때문에 (아직 완전하지 않음) 추상메소드이다.

CompleteCalc는 Calculator를 상속하고 times와 divide를 완성했다..

그래서 CompleteCalc는 인스턴스 생성이 가능하다. ( Calculator는 추상메소드이기 때문에 인스턴스 생성이 불가능) 

 

*예외적으로

default 메소드를 선언하면 완성된 메소드를 사용 할 수 있다. ( 자바 최신버전 한정, 거의 사용하진 않고 알아만 두자)

 

메소드의 멀티 상속은 문제가 있습니다. 그러나 인터페이스는 멀티상속이 가능합니다. 

-> 인터페이스 implements 는 점선으로 표시합니다.

이런식으로 두가지 interface를 한번에 implements 할 수 있습니다.

그리고 interface 간 상속도 가능합니다.

 

'Back-end > Java' 카테고리의 다른 글

JAVA 예외처리 개념  (0) 2021.08.05
다형성  (0) 2021.08.05
추상클래스  (0) 2021.08.04
상속  (0) 2021.08.03
개체 참조  (0) 2021.08.03
댓글