본문 바로가기

프로그래밍/Java (기초)

인터페이스(interface)

반응형

인터페이스(interface)




인터페이스는 우리가 익히 알고 있는 그 인터페이스를 뜻한다.

유저 인터페이스의 약자인 UX를 생각해보면.. 사용자의 경험을 말하는데..  사용자가 어떤 기능들을 사용할때 있어서 경험하게 되는 것을 말한다.



즉 어떤 기능을 사용하는 수단을 말한다고 할수 있다.

이처럼 자바에서도 어떤 기능을 사용할수 있게 연결고리를 만들어주는 역할을 하는 것이 인터페이스이다.


인터페이스는 객체, 즉 클래스의 타입중 하나이다. 예제 코드를 보자 




package org.opentutorials.javatutorials.interfaces.example1;

 

interface IF{

    public void z();

}

 

class A implements IF{

    public void z(){}

}



먼저 IF로 이름붙여진 객체는 기존의 class 가 아닌 interface로 선언 되어있는것을 볼수 있다.

또한 IF 객체(인터페이스)는 z()라는 메소드를 가지고 있다.


그리고 A라는 객체는 implements IF라는 선언을 받고 있다.

또 이 클래스안에는 z()메소드가 또 등장하게 된다.



특징



이때 A클래스는 IF의 인터페이스에 속해있다. 이러한 관계를 우리는

'A클래스는 IF인터페이스를 구현하고 있다. ' 라고 말한다. (implements)


1)이때 A클래스는 인터페이스에 선언된 z()메소드를 꼭 구현해야만한다. (그렇지 않을 경우 에러가 발생한다)



2) 논리적으로 생각해보면, 인터페이스는 구현부 클래스의 다리역할이다.

즉 실질적인 구현부와 내용은 클래스에 있으므로, 해당 메소드는 무조건 Access modify가 public이 된다.


3) 인터페이스는 인터페이스를 상속할수 있다.


인터페이스는 사실상 클래스와 비슷한 모습을 띄지만 엄연히 클래스가 아니다.

자바는 클래스가 클래스를 상속하는 이중상속을 허용하지 않는다.

그렇지만 인터페이스는 클래스와 다르다.

고로 인터페이스는 인터페이스를 상속할수 있다.


마치 클래스가 클래스를 상속하는것과 비슷한 모양새를 띈다.


예시




package org.opentutorials.javatutorials.interfaces.example1;

 

interface IF{

    public void z();

}

 

interface IF2 extends IF{

    public void x();

}

class A implements IF2{

    public void z(){};

    public void x(){};  // 에러가 발생하지 않는다.


}




해당 예시는, 2개의 인터페이스와 하나의 클래스로 이루어져 있다.

인터페이스 IF가 있고, IF를 상속받는 IF2가 있고, 이를 구현하는 클래스 A가 있다.

IF2는 IF를 상속받았으므로, A는 IF의 z() 메소드와, x()메소드를 모두 구현해야만 에러가 발생하지 않게 된다.


반응형

'프로그래밍 > Java (기초)' 카테고리의 다른 글

overloading  (1) 2016.03.28
overriding  (0) 2016.03.28
상속(inheritance)  (0) 2016.03.26
초기화와 생성자(Constructor), this, super  (0) 2016.03.26
유효범위 (Scope)  (0) 2016.03.26