본문 바로가기

JAVA

[JAVA] 인터페이스 Interface

오늘은 인터페이스에 대해 간략하게 알아보겠다.


1. 인터페이스의 개념

인터페이스는 간단히 생각하면 콘센트라고 생각하면 된다.

어떤 제품과도 상관없이 콘센트만 220v면 사용할 수 있듯이

제품을 나누어 개발하고 하나로 합칠때 미리 규격을 정하지 않으면 문제가 생길 수 있기때문에 어떻게 하자~ 라고 규칙을 정한것을 인터페이스 라고 한다.

- 인터페이스만 준수하면 통합에 신경쓰지않고 다양한 형태로 새로운 클래스를 개발할 수 있다.

- 클래스의 다중 상속을 지원하지 않지만 인터페이스로 다중 상속 효과를 간접적으로 할 수 있다.

 

2. 인터페이스의 구성요소

인터페이스는 무엇을 할지는 명시하지만 어떻게 할지는 명시하지않는다.

기본적으로 자바에는 여러가지 인터페이스를 지원하지만 이것은 필요에 따라 다르기 때문에 찾아보길 권한다.

대표적으로는 java.util의 List,Collection,Comparator등이 있다.

 

2 - 1. 인터페이스 사용방법

인터페이스는 기본적으로 클래스와 문법이 유사하지만 인스턴스 변수를 선언할수없다.

객체를 생성할수 없기에 생성자도 없다.

interface 인터페이스이름{
// 상수 필드 
-> public static final을 생략해도 된다.

// 추상 메서드
-> 모든 메서드가 public abstract이기 때문에 public abstract를 생략해도 된다.

// 디폴트 메서드
// 정적 메서드
-> Java8 부터 선언이 가능하다.

// 비공개 메서드
-> Java9 부터 선언이 가능하다. 인터페이스 내부에서만 사용할수있는 도우미 라고 생각하면 된다.
}

3.  인터페이스의 상속

인터페이스도 extends 키워드를 통해 자식 인터페이스를 정의할 수 있다.

그리고 인터페이스로 자식클래스를 정의하려면 추상 메서드를 구현해야하므로  implements  키워드를 사용한다.

// 인터페이스를 상속하려면 extends 를 사용한다.
interface 자식_인터페이스 extends 부모_인터페이스{
.....
}

// 인터페이스를 구현하려면 implements를 사용한다.
interface 자식_인터페이스 implements 부모_인터페이스{
.....
}
// 상속할 인터페이스가 여러개라면 쉼표로 연결한다.
interface 자식_인터페이스 extends 부모_인터페이스1,부모_인터페이스2,부모_인터페이스3{
.....
}
class 자식 클래스 implements 부모인터페이스1,......{

}
//  인터페이스는 다중 상속할 수 있다.
interface 자식_인터페이스 extends 부모_클래스 implements 부모_인터페이스1.....{
.....
}
// 클래스는 다중 상속할 수 없다.
class 자식클래스 extends 부모클래스1, 부모클래스2 ... ->  x

 

반응형