데브허브 | DEVHUB | 코틀린 기초 문법 - 23일차 / interface 인터페이스코틀린 기초 문법 - 23일차 / interface 인터페이스
- 코틀린 인터페이스는 상속(Inheritance)과 달리 '느슨한' 관계를 형성하여, 클래스가 여러 '카테고리'나 '특성'을 유연하게 '붙였다 뗐다' 할 수 있게 합니다. 🏷️
- 상속이 부모의 모든 속성을 물려받는 '끈끈한' 관계라면, 인터페이스는 특정 기능이나 속성만을 선택적으로 부여하는 '가벼운' 관계입니다. 🍃
- 클래스는 여러 인터페이스를 동시에 구현(채택)할 수 있어, 단일 상속의 한계를 극복하고 다양한 기능을 조합할 수 있습니다. 🧩
- 인터페이스는 구현하는 클래스에게 특정 메소드나 속성을 반드시 구현하도록 '강제성'을 부여하여, 코드의 일관성과 예측 가능성을 높입니다. 🚨
- 인터페이스 메소드는 기본 구현(Default Implementation)을 가질 수 있으며, 구현 클래스는 이를 오버라이드하거나 그대로 사용할 수 있습니다. 🛠️
- 동일한 이름의 메소드가 여러 인터페이스에 존재할 경우,
super<인터페이스이름>.메소드() 구문을 사용하여 호출할 인터페이스를 명시적으로 지정할 수 있습니다. ⚔️
- 인터페이스는 다형성(Polymorphism)을 지원하여, 객체를 특정 인터페이스 타입으로 제한하여 필요한 속성만 노출시키거나, 공통 모듈 개발에 활용될 수 있습니다. 🎭
- UI 이벤트 리스너(예:
OnClickListener)와 같이 특정 이벤트 발생 시 호출될 콜백 함수를 정의하는 데 매우 유용하게 사용됩니다. 👂
- 테스트 코드 작성 및 아키텍처 패턴 적용 시, 유연하고 확장 가능한 코드 구조를 만드는 데 핵심적인 역할을 합니다. 🏗️
- 인터페이스는 메소드뿐만 아니라 멤버 변수(속성)도 정의할 수 있으며, 이를 구현하는 클래스는 해당 변수를 반드시 제공해야 합니다. 📊