본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 인터페이스(interface)

by 느링 2017. 8. 25.

인터페이스

JAVA에서는 다중상속을 지원하지 않습니다. (클래스 X)

하지만 인터페이스는 다중상속이 가능합니다. 인터페이스는 클래스가 아닙니다.

인터페이스는 추상메소드상수만 포함 할 수 있습니다.

동일한 형태(이름, 전달인자)메소드로 접근하기 위한 방법입니다.

 

구조

interface 인터페이스이름{

상수

접근지정자 추상메소드(인자)

}

- 인터페이스 안에 있는 메소드는 자동으로 추상 메소드로 인식하기 때문에 몸체 구현을 하지 않습니다.

- 상속 시 서브 클래스에서 무조건 오버라이딩해야합니다. (강제성)

- 모두 public 접근지정자를 사용합니다.

 

인터페이스 장점

- 개발 시간을 단축해줍니다.

- 표준화 작업이 가능합니다.

- 서로 관계없는 클래스들에게 관계를 맺어줄 수 있습니다.

- 독립적인 프로그래밍이 가능합니다.

 

인터페이스가 필요한 이유

여러사람들이 같이 일을 할 때 쉽게 말해서 약속을 하는겁니다.

여러가지 클래스들을 만들 때 각자 클래스를 알아서 만들 것입니다. 이때 같은 이름의 메소드를 공통적으로 하나 가지고 있으면 좋겠다 싶을 때 인터페이스를 사용합니다. 즉, 하나 이상의 메소드를 공통적으로 같은 이름의 메소드를 쓰자고 약속을 하고 싶을 때 인터페이스를 사용하는 것입니다.

 

<예제 1>

1. 먼저 interface를 만들어줍니다. InterfaceEx1, InterfaceEx2

 

 

2. InterfaceClass 클래스에서 만든 Interface를 상속 받습니다.

다중 상속이 가능하므로 콤마(,)로 계속 상속이 가능합니다.

중요한 것은 상속만 받고 아무 행동하지 않으면 오류가 납니다.

인터페이스 안에 있는 모든 메소드들은 재정의를 해야한다는 것이 상속의 조건입니다.

 

3. 이제 Main Class를 작성해봅니다.

 

 

 

 

▶인터페이스 정리

① 모든 메소드는 묵시적(자동) public abstract입니다.

② 모든 데이터는 묵시적 static final입니다.

③ 추상메소드를 포함하기 때문에 객체생성을 할 수 없습니다.

implements를 사용해서 상속합니다.

다중상속을 지원합니다.

⑥ 인터페이스를 상속받은 서브클래스는 반드시 추상메소드를 선언합니다.(강제성)

업캐스팅이 가능합니다.

⑧ interface와 abstract의 차이는

abstract는 일반 메소드와 추상 메소드 둘 다 공존할 수 있다는 것입니다.

 

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

[JAVA] 추상 클래스(abstract)  (0) 2017.08.28
[JAVA] 예외처리 (1) try ~ catch, finally  (0) 2017.08.25
[JAVA] getter/setter 메소드  (0) 2017.08.25
[JAVA] instanceof 연산자  (1) 2017.08.24
[JAVA] 상속/super  (0) 2017.08.18