코틀린의 클래스 위임

토마스·2023년 2월 27일
0

우테코 로또 미션을 진행하던 중 나의 페어가 일급 컬렉션을 구현하기 위해 by 키워드를 사용함으로써 사용하고 싶은 컬렉션의 기능을 코드를 직접 작성할 필요없이 사용할 수 있도록 했다. 그래서 클래스 위임에 대해 알아보았다.

클래스 위임이란?

어떤 클래스에서 사용하고 싶은 기능을 다른 객체에게 위임함으로써 코드를 작성하지 않아도 사용할 수 있도록 하는 기능이다.

다른 객체란?

클래스 위임을 하기 위해선 제공하려는 기능을 포함한 인터페이스를 구현한 다른 객체가 필요하다.

1. 주 생성자의 인자

주 생성자

컴파일 에러가 안뜨는 것을 볼 수 있다.

2. 프로퍼티

프로퍼티

프로퍼티로 만든 객체 또한 컴파일 에러가 안뜨는 것을 볼 수 있다.

3. 컴패니언 오브젝트

컴패니언 오브젝트

컴패니언 오브젝트의 객체에게 위임해도 된다. 참고로 다른 클래스의 컴패니언 오브젝트도 가능하다.

주의할 점

1. 객체가 생성되기 전에 생성된 객체에만 위임할 수 있다.

위와 같이 주 생성자로 받지 않는 프로퍼티에게는 위임할 수 없다. 왜냐하면 위 코드의 프로퍼티들은 객체가 생성되고 나서 프로퍼티가 초기화되기 때문이다. 객체가 생성되기 전에 생성된 객체에게만 위임할 수 있다.

2. 여러 인터페이스를 구현할 때 같은 시그니쳐가 있으면 재정의 해야 한다.

List 인터페이스와 Set 인터페이스를 모두 구현하려면 시그니쳐가 겹치는 메소드는 재정의해야 한다.

profile
안드로이드 개발자 지망생

0개의 댓글