본문 바로가기

프로그래밍/기본기ㆍ자료구조

Interface (인터페이스)

728x90
반응형

개념

- 일종의 '클래스가 따라야 하는 약속'이라고 할 수 있다.

- 메서드, 프로퍼티, 인덱서, 속성만을 가질 수 있으며 단지 정의만 한다.

(구현부를 갖지 못한다.)

- abstract와 개념적으로는 유사하다.

- Interface와 상속관계에 있는 클래스는 반드시 Interface에 정의한 부분에 대해서 구현해야한다.

- Interface 자체적으로 인스턴스를 만들 수 없다.

- Interface 내부에는 접근 제한자를 가질 수 없다. (강제 public이다)

사용 목적

- 다중 상속이 가능하여 여러 클래스에서 사용되는 공통적인 기능에 대한 명세를 정의하는데 사용한다.

(실제 구현은 Interface를 상속받는 Class에서 구현한다.)

- 콘센트 규격처럼 일종의 규격을 정해놓고 구현하도록 유도하기 위해 사용된다.

- 다형성 때문에 사용한다.

 

다형성에 대해서 간단히 예시를 들어보자면

1. 동물이 있다고 가정하자

2. 원숭이가 있고 고양이가 있다고 가정하자

3. 원숭이와 고양이는 '동물'에 속한다.

4. 먹고, 걷고, 자는것은 두 동물 모두 같다.

5. 그러나 두 동물은 먹는 방법, 걷는 방법, 자는 방법이 다 다르다.

6. 다형성이란 '동물'이라는 개념안에 공통된 기능의 정의가 있고 실 기능은 각 동물들이 구현한다고 생각하면 된다.

 

글로 설명하려니까 어려우니 그냥 코드를 보자.

사용 예시

위와 같이 Interface는 기능에 대한 정의만 하고 실제 기능은 각 동물 클래스 안에서 구현한다.

 

abstract를 배운 사람들은 abstract로 해도 되지 않냐! 하겠지만 abstract와의 차이는 명확하다.

 

다중 상속이 가능하냐 아니냐다.

 

Interface는 class가 아니기 때문에 다중 상속이 가능하고 abstract는 class라서 다중 상속이 불가능하다.

 

abstract 링크

 

Abstract (추상)

개념 - 상황에 맞게 내용을 재정의해서 사용할 수 있는 개념이다. - 상속하는 클래스 내에서 같은 시그니처의 메소드로 오버라이딩 될 수 있다. - Virtual(가상)과는 달리 선언한 추상 함수는 상속받은 하위 클래..

chipmunk-plump-plump.tistory.com

 

다람쥐와 포동포동이

 

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관��

chipmunk-plump-plump.tistory.com

반응형

'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글

Sealed (상속 한정 키워드)  (0) 2020.04.11
Interface와 abstract의 차이  (0) 2020.04.11
Abstract (추상)  (0) 2020.04.10
Virtual (가상 메소드)  (0) 2020.04.10
Queue (큐)  (2) 2020.04.10