Abstract class 와 Interface 는 왜 필요한가?
프로그래밍에서 추상화라는 단어를 듣는다.
"무엇을 할것인지"는 노출하고 "어떻게 동작하는지"는 숨기는 것이다.
Abstract class와 Interface 는 추상화를 돕는 녀석들이다.
추상화가 필요할 때, 둘중 어느 것을 사용해야할지 차이점을 중심으로 정리해보자.
Abstract Class
목적
abstract method, field 를 가질 수 있고 구현부도 가질 수 있다.
특징
변수의 경우 초기화 되지 않는다.
메소드의 경우도 {} body 부분을 갖지 않는다.
abstract class간에도 상속 가능하다.
Interface
상속받을 서브 클래스에게 구현할 메소드와 변수의 원형(signature)을 알려주어
클래스별 공통 분모만 가진채 각자의 목적에 맞게 구현하도록 하는 것.
구현부가 전혀 없는 것이 특징이다.
- 개발 시간 단축 (협업시 분업화 용이)
- 표준화 : 일관되고 정형화된 프로그래밍
- 독립적인 프로그래밍 : 클래스 선언부와 구현부 분리로 이 역시 협업시 분업화 용이
특징
Interface간에도 상속이 가능하다.
내부에 선언한 변수는 모두 abstract 키워드가 붙은것과 같다. (항상 abstract, 초기화가 불가능하다)
대신 메소드는 모두 public open (not final) 형이다.(abstract method와는 다르다)
필요에 따라 abstract method 정의도 가능하다. (normal or abstract)
=> 반드시 서브클래스에서 implement가 필요하다.
'JVM > Kotlin' 카테고리의 다른 글
[Kotlin] Comparator, Comparable (0) | 2022.09.16 |
---|---|
[Java, Kotlin] equals, ==, === 비교 (0) | 2022.09.16 |
[Kotlin] Array SumOf, minOf, maxOf (0) | 2020.10.13 |
[Kotlin] Companion Object (static in Java) (0) | 2020.06.28 |
[Kotlin] Null-Safe (0) | 2020.06.28 |