버그 잡이

Interface 개념 정리 #추상클래스 vs 인터페이스 #다형성 본문

안드로이드/자바

Interface 개념 정리 #추상클래스 vs 인터페이스 #다형성

버그잡이 2020. 6. 3. 16:42

추상클래스 vs 인터페이스

 

 

1. 정의

 

- 추상클래스 : 1개 이상의 추상메소드를 가진 클래스

 

- 인터페이스 : 모든 메소드가 추상 메소드인 추상 메소드 모음

 

 

 

2. 차이점

 

"사용 목적에 있어서 다릅니다." (핵심)

 

추상 메서드

   - 부모 클래스의 기능을 이용 및 확장

 

인터페이스

   - 구현 객체와 동일한 동작을 강제. 일종의 설계도와 같은 역할

 

 

 

 +그 외

 

 추상 메서드

   - 클래스로 구체적인 로직이나 상태를 가질 수 있습니다.

   - 단일 상속

 

 인터페이스

   - 인터페이스로 구체적인 로직이나 상태를 가질 수 없습니다. 

   - 다중 상속 가능

 

 

 

 

 

 

인터페이스와 다형성

 

인터페이스는 "메소드에 대한 정의를 먼저 하고 구현을 미루는 패턴"입니다.

이렇게 어떤한 행동에 대한 구체적인 구현을 나중으로 미루는 것을 추상이라고 합니다.

추상화를 통해 자바의 특징 중 하나인 다형성을 구현할 수 있습니다.

즉, 같은 인터페이스를 implement했지만 다른 동작을 하는 메서드를 구현할 수 있는 것입니다.

 

 

콜백, 리스너, 옵저버

 

다형성으로 우리가 흔히 하는 작업은 '콜백, 리스너, 옵저버' 를 만들어 사용하는 것입니다.

개념적으로 조금씩 차이가 있지만 큰 틀은 같습니다.

"A 클래스에서 메소드를 정의하고 B 클래스에서 메소드를 구현" 하는 것이지요.

 

 

Ex_안드로이드 리사이클러뷰 클릭리스너 패턴

 

- interface 없이 클릭리스너를 adapter에 구현하면 adapter의 자원만 활용할 수 있기 때문에 activity의 자원을 활용한 작업을 진행할 수 없습니다(ex_액티비티 이동)

- interface의 다형성을 활용하여 adapter와 activity를 연결하면 위와 같은 문제를 해결할 수 있습니다.

- adapter 내부에 리스너 interface를 선언하고 이에 대한 구현은 activity에서 진행합니다.

- adpter에서는 클릭시 해당 interface를 동작시키게만 하고 실제 구현은 activity에서 진행하는 것입니다. 이를 통해 activity의 자원을 활용한 작업을 진행할 수 있습니다.

 

(구체적인 코드 구현은 아래 찰스님의 블로그를 참조 바랍니다.)

 

 

 

 

#결론

 

1. 인터페이스는 하나의 명세로 개발자들 간의 협업을 돕느다.

2. 인터페이스의 다형성을 활용하여 다른 클래스의 자원을 활용할 수 있다.

 

 

 

 

*참고

https://mygumi.tistory.com/257

www.charlezz.com/?p=768

반응형
Comments