Android App Track⛺-033

MunkiJeon·2024년 7월 21일

TIL

목록 보기
50/59
post-thumbnail

TIL (Today I Learned)

오늘 공부한거!

인터페이스

  • 메소드명 과 파라메타 정도만 정의/설계후 인터페이스 사용시 구현(메소드 내부의 기능을 만듬)을 강제함
//예시
interface InterfaceName {
    // 추상 메서드 선언
    fun methodName()
    // 추상 프로퍼티 선언
    val propertyName: Type
    // 디폴트 메서드 선언
    fun defaultMethod() {
        // 구현 내용
    }
    // 디폴트 프로퍼티 선언
    val defaultProperty: Type
        get() = // 구현 내용
}
//----------- 인터페이스 구현한 클래스 -----------
/*인터페이스의 프로퍼티와 메서드를 구현하지 않으면 컴파일 에러가 발생함!!*/
class ClassName : InterfaceName {
    override fun methodName() {
        // 구현 내용
    }
    override val propertyName: Type
        get() = // 구현 내용
}

인터페이스 장점

  • 다중 상속의 대안
    • 코틀린은 다중 상속을 지원하지 않지만, 인터페이스를 통해 다중 상속과 유사한 기능을 구현 가능
    • 클래스는 다수의 인터페이스를 구현할 수 있으며, 이를 통해 다양한 기능과 행동을 조합 가능
  • 유연한 구조
    • 인터페이스를 사용하면 클래스들 간에 느슨한 결합(loose coupling)을 형성할 수 있습니다. - 인터페이스를 통해 클래스들이 상호작용하는 방법을 정의하고, 클래스들은 필요한 인터페이스를 구현함으로써 서로의 동작에 영향을 주지 않고도 유연하게 확장이 가능합니다.
  • 코드 재사용성
    • 다른 클래스들이 공통으로 구현해야 하는 기능을 인터페이스로 정의하면,
      해당 인터페이스를 구현한 다수의 클래스에서 해당 기능을 재사용할 수 있습니다.

인터페이스 단점

  • 정의한 프로퍼티의 값을 저장할 수 없음
    • 인터페이스에서 선언한 프로퍼티는 기본적으로 추상 프로퍼티이므로 값을 저장할 수 없습니다.
      따라서 인터페이스에 정의된 프로퍼티는 구현하는 클래스에서 직접 초기화해야 합니다
  • 높은 추상화 수준
    • 인터페이스는 기본적으로 추상적인 개념을 나타내므로 구체적인 구현 내용을 정의할 수 없습니다.
      따라서 인터페이스만으로는 완전한 기능을 갖춘 클래스를 만들 수 없으며,
      인터페이스를 구현한 클래스에서 구체적인 동작을 구현해야 합니다.

람다식

  • 간단한 일회성 동작이나 이벤트 처리를 위해 사용 (단순히 보면 익명함수)
  • 함수를 정의하지 않고도 바로 사용할 수 있습니다. (익명함수니까...)
    람다식은 중괄호 { }로 감싸져 있고, 화살표 ->를 사용하여 매개변수함수 본문을 구분

참고 링크 :
https://codechacha.com/ko/kotlin-lambda-expressions/
https://yiyj1030.tistory.com/237

profile
공장자동화와 웹 개발을 핥아 먹다 앱 개발로 전향한 개발자의 키보드의 낡은 키캡⛑️

0개의 댓글